C# 将多个JSON转换为对象JSON.NET

C# 将多个JSON转换为对象JSON.NET,c#,json,json.net,C#,Json,Json.net,因此,我有一项任务需要我将JSON反序列化为C#对象,并在以后处理它们。请注意,JSON和类文件都很大 我正在解析的示例JSON输出如下所示: { "systemTime": 1465126640, "timeSinceStartup": 174758912, "neighbors": [ { "ipAddress": "10.0.0.2", "symmetric": true, "multiPointRelay": true,

因此,我有一项任务需要我将JSON反序列化为C#对象,并在以后处理它们。请注意,JSON和类文件都很大

我正在解析的示例JSON输出如下所示:

{
  "systemTime": 1465126640,
  "timeSinceStartup": 174758912,
  "neighbors": [
    {
      "ipAddress": "10.0.0.2",
      "symmetric": true,
      "multiPointRelay": true,
      "multiPointRelaySelector": false,
      "willingness": 3,
      "twoHopNeighborCount": 1
    }
  ],
  "links": [
    {
      "localIP": "10.0.0.1",
      "remoteIP": "10.0.0.2",
      "validityTime": 38810,
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "linkCost": 1024
    }
  ],
  "routes": [
    {
      "destination": "10.0.0.2",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 1,
      "rtpMetricCost": 1024,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.3",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 2,
      "rtpMetricCost": 2531,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.4",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 3,
      "rtpMetricCost": 3555,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.5",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 3,
      "rtpMetricCost": 4732,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.6",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 4,
      "rtpMetricCost": 6151,
      "networkInterface": "mesh0"
    }
  ],
  "topology": [
    {
      "destinationIP": "10.0.0.2",
      "lastHopIP": "10.0.0.1",
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "tcEdgeCost": 1024,
      "validityTime": 0
    },
    {
      "destinationIP": "10.0.0.1",
      "lastHopIP": "10.0.0.2",
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "tcEdgeCost": 1024,
      "validityTime": 283361
    },
    {
      "destinationIP": "10.0.0.3",
      "lastHopIP": "10.0.0.2",
      "linkQuality": 0.940,
      "neighborLinkQuality": 0.721,
      "tcEdgeCost": 1507,
      "validityTime": 283361
    },
    {
      "destinationIP": "10.0.0.2",
      "lastHopIP": "10.0.0.3",
      "linkQuality": 0.721,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1507,
      "validityTime": 277026
    },
    {
      "destinationIP": "10.0.0.4",
      "lastHopIP": "10.0.0.3",
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "tcEdgeCost": 1024,
      "validityTime": 277026
    },
    {
      "destinationIP": "10.0.0.5",
      "lastHopIP": "10.0.0.3",
      "linkQuality": 0.662,
      "neighborLinkQuality": 0.701,
      "tcEdgeCost": 2201,
      "validityTime": 277026
    },
    {
      "destinationIP": "10.0.0.3",
      "lastHopIP": "10.0.0.4",
      "linkQuality": 1.000,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1088,
      "validityTime": 274952
    },
    {
      "destinationIP": "10.0.0.5",
      "lastHopIP": "10.0.0.4",
      "linkQuality": 0.940,
      "neighborLinkQuality": 0.529,
      "tcEdgeCost": 2055,
      "validityTime": 274952
    },
    {
      "destinationIP": "10.0.0.3",
      "lastHopIP": "10.0.0.5",
      "linkQuality": 0.701,
      "neighborLinkQuality": 0.662,
      "tcEdgeCost": 2201,
      "validityTime": 280956
    },
    {
      "destinationIP": "10.0.0.4",
      "lastHopIP": "10.0.0.5",
      "linkQuality": 0.607,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1789,
      "validityTime": 280956
    },
    {
      "destinationIP": "10.0.0.6",
      "lastHopIP": "10.0.0.5",
      "linkQuality": 1.000,
      "neighborLinkQuality": 0.721,
      "tcEdgeCost": 1419,
      "validityTime": 280956
    },
    {
      "destinationIP": "10.0.0.5",
      "lastHopIP": "10.0.0.6",
      "linkQuality": 0.831,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1308,
      "validityTime": 269860
    }
  ]
}
List<Gizmo> gizmos JsonConvert.DeserializeObject<List<Gizmo>>(jsonStr);
请注意,
拓扑
节点(我不确定术语)存储了多个值。这里的值的数量是一个变量,即它随时间而增加

我为解析此JSON而生成的类如下(使用创建):

任何指针、样本等都会有帮助。 谢谢。

试试看:

Gizmo gizmo = JsonConvert.DeserializeObject<Gizmo>(jsonStr);
Gizmo Gizmo=JsonConvert.DeserializeObject(jsonStr);
gizmo类中的拓扑列表不是gizmo列表。 从那里可以得到拓扑列表

如果您有小控件列表,则可以按如下方式获取它们:

{
  "systemTime": 1465126640,
  "timeSinceStartup": 174758912,
  "neighbors": [
    {
      "ipAddress": "10.0.0.2",
      "symmetric": true,
      "multiPointRelay": true,
      "multiPointRelaySelector": false,
      "willingness": 3,
      "twoHopNeighborCount": 1
    }
  ],
  "links": [
    {
      "localIP": "10.0.0.1",
      "remoteIP": "10.0.0.2",
      "validityTime": 38810,
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "linkCost": 1024
    }
  ],
  "routes": [
    {
      "destination": "10.0.0.2",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 1,
      "rtpMetricCost": 1024,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.3",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 2,
      "rtpMetricCost": 2531,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.4",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 3,
      "rtpMetricCost": 3555,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.5",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 3,
      "rtpMetricCost": 4732,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.6",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 4,
      "rtpMetricCost": 6151,
      "networkInterface": "mesh0"
    }
  ],
  "topology": [
    {
      "destinationIP": "10.0.0.2",
      "lastHopIP": "10.0.0.1",
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "tcEdgeCost": 1024,
      "validityTime": 0
    },
    {
      "destinationIP": "10.0.0.1",
      "lastHopIP": "10.0.0.2",
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "tcEdgeCost": 1024,
      "validityTime": 283361
    },
    {
      "destinationIP": "10.0.0.3",
      "lastHopIP": "10.0.0.2",
      "linkQuality": 0.940,
      "neighborLinkQuality": 0.721,
      "tcEdgeCost": 1507,
      "validityTime": 283361
    },
    {
      "destinationIP": "10.0.0.2",
      "lastHopIP": "10.0.0.3",
      "linkQuality": 0.721,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1507,
      "validityTime": 277026
    },
    {
      "destinationIP": "10.0.0.4",
      "lastHopIP": "10.0.0.3",
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "tcEdgeCost": 1024,
      "validityTime": 277026
    },
    {
      "destinationIP": "10.0.0.5",
      "lastHopIP": "10.0.0.3",
      "linkQuality": 0.662,
      "neighborLinkQuality": 0.701,
      "tcEdgeCost": 2201,
      "validityTime": 277026
    },
    {
      "destinationIP": "10.0.0.3",
      "lastHopIP": "10.0.0.4",
      "linkQuality": 1.000,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1088,
      "validityTime": 274952
    },
    {
      "destinationIP": "10.0.0.5",
      "lastHopIP": "10.0.0.4",
      "linkQuality": 0.940,
      "neighborLinkQuality": 0.529,
      "tcEdgeCost": 2055,
      "validityTime": 274952
    },
    {
      "destinationIP": "10.0.0.3",
      "lastHopIP": "10.0.0.5",
      "linkQuality": 0.701,
      "neighborLinkQuality": 0.662,
      "tcEdgeCost": 2201,
      "validityTime": 280956
    },
    {
      "destinationIP": "10.0.0.4",
      "lastHopIP": "10.0.0.5",
      "linkQuality": 0.607,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1789,
      "validityTime": 280956
    },
    {
      "destinationIP": "10.0.0.6",
      "lastHopIP": "10.0.0.5",
      "linkQuality": 1.000,
      "neighborLinkQuality": 0.721,
      "tcEdgeCost": 1419,
      "validityTime": 280956
    },
    {
      "destinationIP": "10.0.0.5",
      "lastHopIP": "10.0.0.6",
      "linkQuality": 0.831,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1308,
      "validityTime": 269860
    }
  ]
}
List<Gizmo> gizmos JsonConvert.DeserializeObject<List<Gizmo>>(jsonStr);
列出gizmos JsonConvert.DeserializeObject(jsonStr);
以下是获取所有拓扑的方法:

Gizmo gizmo = JsonConvert.DeserializeObject<Gizmo>(jsonStr);
List<Topology> topologies = gizmo.topology.ToList();
Gizmo Gizmo=JsonConvert.DeserializeObject(jsonStr);
List topologies=gizmo.topology.ToList();
试试看:

Gizmo gizmo = JsonConvert.DeserializeObject<Gizmo>(jsonStr);
Gizmo Gizmo=JsonConvert.DeserializeObject(jsonStr);
gizmo类中的拓扑列表不是gizmo列表。 从那里可以得到拓扑列表

如果您有小控件列表,则可以按如下方式获取它们:

{
  "systemTime": 1465126640,
  "timeSinceStartup": 174758912,
  "neighbors": [
    {
      "ipAddress": "10.0.0.2",
      "symmetric": true,
      "multiPointRelay": true,
      "multiPointRelaySelector": false,
      "willingness": 3,
      "twoHopNeighborCount": 1
    }
  ],
  "links": [
    {
      "localIP": "10.0.0.1",
      "remoteIP": "10.0.0.2",
      "validityTime": 38810,
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "linkCost": 1024
    }
  ],
  "routes": [
    {
      "destination": "10.0.0.2",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 1,
      "rtpMetricCost": 1024,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.3",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 2,
      "rtpMetricCost": 2531,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.4",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 3,
      "rtpMetricCost": 3555,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.5",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 3,
      "rtpMetricCost": 4732,
      "networkInterface": "mesh0"
    },
    {
      "destination": "10.0.0.6",
      "genmask": 32,
      "gateway": "10.0.0.2",
      "metric": 4,
      "rtpMetricCost": 6151,
      "networkInterface": "mesh0"
    }
  ],
  "topology": [
    {
      "destinationIP": "10.0.0.2",
      "lastHopIP": "10.0.0.1",
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "tcEdgeCost": 1024,
      "validityTime": 0
    },
    {
      "destinationIP": "10.0.0.1",
      "lastHopIP": "10.0.0.2",
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "tcEdgeCost": 1024,
      "validityTime": 283361
    },
    {
      "destinationIP": "10.0.0.3",
      "lastHopIP": "10.0.0.2",
      "linkQuality": 0.940,
      "neighborLinkQuality": 0.721,
      "tcEdgeCost": 1507,
      "validityTime": 283361
    },
    {
      "destinationIP": "10.0.0.2",
      "lastHopIP": "10.0.0.3",
      "linkQuality": 0.721,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1507,
      "validityTime": 277026
    },
    {
      "destinationIP": "10.0.0.4",
      "lastHopIP": "10.0.0.3",
      "linkQuality": 1.000,
      "neighborLinkQuality": 1.000,
      "tcEdgeCost": 1024,
      "validityTime": 277026
    },
    {
      "destinationIP": "10.0.0.5",
      "lastHopIP": "10.0.0.3",
      "linkQuality": 0.662,
      "neighborLinkQuality": 0.701,
      "tcEdgeCost": 2201,
      "validityTime": 277026
    },
    {
      "destinationIP": "10.0.0.3",
      "lastHopIP": "10.0.0.4",
      "linkQuality": 1.000,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1088,
      "validityTime": 274952
    },
    {
      "destinationIP": "10.0.0.5",
      "lastHopIP": "10.0.0.4",
      "linkQuality": 0.940,
      "neighborLinkQuality": 0.529,
      "tcEdgeCost": 2055,
      "validityTime": 274952
    },
    {
      "destinationIP": "10.0.0.3",
      "lastHopIP": "10.0.0.5",
      "linkQuality": 0.701,
      "neighborLinkQuality": 0.662,
      "tcEdgeCost": 2201,
      "validityTime": 280956
    },
    {
      "destinationIP": "10.0.0.4",
      "lastHopIP": "10.0.0.5",
      "linkQuality": 0.607,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1789,
      "validityTime": 280956
    },
    {
      "destinationIP": "10.0.0.6",
      "lastHopIP": "10.0.0.5",
      "linkQuality": 1.000,
      "neighborLinkQuality": 0.721,
      "tcEdgeCost": 1419,
      "validityTime": 280956
    },
    {
      "destinationIP": "10.0.0.5",
      "lastHopIP": "10.0.0.6",
      "linkQuality": 0.831,
      "neighborLinkQuality": 0.940,
      "tcEdgeCost": 1308,
      "validityTime": 269860
    }
  ]
}
List<Gizmo> gizmos JsonConvert.DeserializeObject<List<Gizmo>>(jsonStr);
列出gizmos JsonConvert.DeserializeObject(jsonStr);
以下是获取所有拓扑的方法:

Gizmo gizmo = JsonConvert.DeserializeObject<Gizmo>(jsonStr);
List<Topology> topologies = gizmo.topology.ToList();
Gizmo Gizmo=JsonConvert.DeserializeObject(jsonStr);
List topologies=gizmo.topology.ToList();

嘿,非常感谢。您能否详细说明并扩展此答案,以说明如何使用拓扑列表?然后我将它标记为答案,作为我原始问题的一部分。嗨,我扩展了答案,向您展示了如何从gizmo对象获取拓扑列表。希望能有帮助。非常感谢。这真的很有帮助。嘿,非常感谢。您能否详细说明并扩展此答案,以说明如何使用拓扑列表?然后我将它标记为答案,作为我原始问题的一部分。嗨,我扩展了答案,向您展示了如何从gizmo对象获取拓扑列表。希望能有帮助。非常感谢。这真的很有帮助。