首页 > 解决方案 > 如何在 C# 中将 json 数据转换为数组。?

问题描述

{
"shapes":[{"id":"A","cursor":"pointer","visual":null,"x":69.25,"y":50},{"name":"Right"},{"name":"Auto"}],"width":10,"height":10},"undoable":true},
{"id":"B","cursor":"pointer","visual":null,"x":69.25,"y":50},{"name":"Right"},{"name":"Auto"}],"width":10,"height":10},"undoable":true}],
"connections":[{"id":"8Op6PApGWW","selectable":true,"serializable":true,"from":{"shapeId":"A"},"toX":null,"toY":null,"to":{"shapeId":"B"}}]
},

这是我的 json 数据,现在我必须对其进行反序列化并获取形状的 ID 以及从和到 id 的连接。

我试过这样。

string jsonString = Diagram.ResponseData.diagram;
JObject jsondata = (JObject)JsonConvert.DeserializeObject(jsonString);

但我得到了一些第一,最后,孩子这些属性。

我想要像 jsondata[0]shapes 和第二个索引连接,这样我就可以访问那些的属性......

标签: c#jsonserializationdeserialization

解决方案


您发布的 JSON 示例不是有效的 JSON。假设这是一个错字,那么......

您当前正在从您的 JSON 创建一个 JObject。如果你想要一个数组,那么你需要反序列化为一个包含数组的对象(根据你的数据示例判断)。

首先,您需要创建与您的 JSON 输入匹配的类。您可以通过将(有效)JSON 粘贴到 Visual Studio 中作为编辑 -> 选择性粘贴 -> 将 JSON 粘贴为类(首先创建新类)来执行此操作。

这应该创建一个 Root 对象,其中包含您的内部数据。然后你可以像这样反序列化

RootObject root = JsonConvert.DeserializeObject<RootObject>(jsonString);
var shapeArray = root.Shapes;

推荐阅读