我将大对象数组序列化为jsonhttp响应流。现在,我想一次从流中反序列化这些对象。是否有任何C#库可以让我做到这一点?我看过json.net,但似乎必须立即反序列化对象的完整数组。
[{large json object},{large json object}.....]
澄清:我想一次从流中读取一个json对象并将其反序列化。
为了逐步读取JSON,您需要JsonTextReader
结合使用和StreamReader
。但是,您不必一定要从阅读器中手动读取所有JSON。您应该能够利用Linq-To-JSONAPI从读取器加载每个大对象,以便您可以更轻松地使用它。
举个简单的例子,假设我有一个看起来像这样的JSON文件:
[
{
"name": "foo",
"id": 1
},
{
"name": "bar",
"id": 2
},
{
"name": "baz",
"id": 3
}
]
从文件中逐步读取代码的代码可能类似于以下内容。(在您的情况下,您可以用响应流替换FileStream。)
using (FileStream fs = new FileStream(@"C:\temp\data.json", FileMode.Open, FileAccess.Read))
using (StreamReader sr = new StreamReader(fs))
using (JsonTextReader reader = new JsonTextReader(sr))
{
while (reader.Read())
{
if (reader.TokenType == JsonToken.StartObject)
{
// Load each object from the stream and do something with it
JObject obj = JObject.Load(reader);
Console.WriteLine(obj["id"] + " - " + obj["name"]);
}
}
}
上面的输出看起来像这样:
1 - foo
2 - bar
3 - baz
问题内容: 我确定这个问题已经被一遍又一遍地询问了,但是由于某种原因,我仍然无法设法解决这个问题。 我想反序列化包含单个成员的JSON对象;字符串数组: 这是我要反序列化的类: 这是反序列化方法: 像这样的调用返回的初始化实例,但数组保持不变。 的结构有问题吗? 问题答案: 嗯,发布此消息后,我意识到我缺少以下属性的修饰: 现在工作正常。
问题内容: 我在反序列化以下json数组时遇到麻烦(对不起,大小): 如果将其粘贴到json-viewer中,则会得到以下结构: 现在,包含具有坐标的数组的数组具有可变大小。所以我想在Java中,整个对象应该是一个数组,其中包含数组的集合,每个数组都包含一个。就像是 但是gson不接受这一点。我收到以下错误消息: 这似乎很奇怪,因为对我来说好像不像一个数组。但这可能使我感到困惑,或多或少地迷路了…
我收到来自第3方服务提供商的JSON响应,其中包含一系列对象。当我尝试使用Jackson api反序列化JSON时。我收到以下异常 我的回答是 我的POJO课是这样的 我正在尝试使用以下代码反序列化JSON 如果我试着去做 它在BEGIN_对象本身失败。 如何使用数组读取和反序列化JSON。我应该编写自己的反序列化器吗? 编辑如果我使用JSON字符串而不是流,那么我就能够取回所有Java对象。但为
我似乎很专注于如何去硬化数组数组。我对这些工具很陌生,无法处理JSON文件,我能够去硬化来自国家(https://restcountries.eu/rest/v2/all)的REST应用编程接口的JSON,但我现在正试图从开放天空应用编程接口(https://opensky-network.org/api/states/all?lamin=45.8389 我有这门课: 有能手和二传手 还有这个:
问题内容: 我面临一个问题。我想反序列化来自服务器的复杂JSON响应,但是我只需要其中一部分。 这是一个例子: 我还使用Csharp2json获取所需的类对象,我只是根据需要修改了菜单类: 现在,如果我只需要popup值和他的孩子,我该如何反序列化? 问题答案: 如果您想尝试一下,可以实际使用NewtonSoft.Json的Linq命名空间,并稍加修改代码以仅从JSON中获取“ popup”元素。
问题内容: 我在反序列化一些json数据,获取InvalidCastExceptions之类的问题。 谁能指出我正确的方向? 这是我要反序列化的json; [{“ OrderId”:0,“名称”:“摘要”,“ MaxLen”:“ 200”},{“ OrderId”:1,“名称”:“详细信息”,“ MaxLen”:“ 0”}] 这是我的代码; 问题答案: OrderId是json中的一个Int(请注