c# - 如何在 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 和第二个索引连接,这样我就可以访问那些的属性......
解决方案
您发布的 JSON 示例不是有效的 JSON。假设这是一个错字,那么......
您当前正在从您的 JSON 创建一个 JObject。如果你想要一个数组,那么你需要反序列化为一个包含数组的对象(根据你的数据示例判断)。
首先,您需要创建与您的 JSON 输入匹配的类。您可以通过将(有效)JSON 粘贴到 Visual Studio 中作为编辑 -> 选择性粘贴 -> 将 JSON 粘贴为类(首先创建新类)来执行此操作。
这应该创建一个 Root 对象,其中包含您的内部数据。然后你可以像这样反序列化
RootObject root = JsonConvert.DeserializeObject<RootObject>(jsonString);
var shapeArray = root.Shapes;
推荐阅读
- javascript - 解释为什么在第二个例子中 Animal 函数不是 dog 对象的构造函数?
- c# - 尽管 FEATURE_BROWSER_EMULATION 在网络浏览器中使用固定版本的 Internet Explorer
- python - 最小/最大数字程序,一旦插入负数就必须停止输入
- git - VSCode 本地 git 钩子
- solr - Solr 建议器:上下文过滤器错误地应用于 FileDictionaryFactory
- python - 获取两个列表之间所有可能的组合,包括多个连接
- reactjs - 在useEffect内部获取的useCallback用法不正确-ReactJS
- javascript - 与 Google 日历、Outlook 日历和 iCalendar “连接”的库
- flutter - 如何获得异步函数执行的时间?
- shell - 执行命令从 Unix 服务器读取日志文件