当前位置: 首页 > 面试题库 >

一次反序列化json数组流一个项目

东方宜
2023-03-14
问题内容

我将大对象数组序列化为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(请注