一尘不染

使用C#解析JSON数据

json

我有大约7000行要解析的JSON数据。在这里可以看到其中一部分的示例。我所做的就是利用WebRequestStreamReader把所有的数据转换成字符串。(奇怪的是,它将所有数据放入一条很长的行中)。但是现在我想解析这个,我不确定如何。谁能解释如何使用Deserialize?我之前已经用Java解析过JSON数据,但是用C#却遇到了麻烦,特别是因为我无法找到带有清晰示例的文档。任何帮助将不胜感激。


阅读 274

收藏
2020-07-27

共1个答案

一尘不染

尝试使用JSON.Net,如果您还没有看到它,它将对您有所帮助。

Json.NET库使在.NET中处理JSON格式的数据变得简单。关键功能包括一个灵活的JSON序列化程序,该序列化程序可用于将.NET类快速转换为JSON并再次转换回;而LINQ为JSON则用于读写JSON。

反序列化在这里讨论。

在JSON文本和.NET对象之间进行转换的最快方法是使用JsonSerializer。JsonSerializer将.NET对象转换为等效的JSON,然后再次返回。

反序列化的基本代码结构如下- Target仍需要填写以捕获具有适当类型的其余已解析数据项。提到的文件json.txt包含来自上面URL的数据。

using System;
using System.IO;
using Newtonsoft.Json;

public class NameAndId
{
    public string name;
    public int id; 
}

public class Data
{
    public NameAndId[] data;
}

public class Target
{
    public string id;
    public NameAndId from;
    public Data likes;
}

public class Program
{
    static void Main(string[] args)
    {
        string json = File.ReadAllText(@"c:\temp\json.txt");
        Target newTarget = JsonConvert.DeserializeObject<Target>(json);
    }
}

这是JSON流的第一部分供参考:

{
   "id": "367501354973",
   "from": {
      "name": "Bret Taylor",
      "id": "220439"
   },
   "message": "Pigs run from our house in fear. Tonight, I am wrapping the pork tenderloin in bacon and putting pancetta in the corn.",
   "updated_time": "2010-03-06T02:57:48+0000",
   "likes": {
      "data": [
         {
            "id": "29906278",
            "name": "Ross Miller"
         },
         {
            "id": "732777462",
            "name": "Surjit Padham"
         },
2020-07-27