gpt4 book ai didi

c# - 仅反序列化 JSON 文件的一个属性

转载 作者:太空狗 更新时间:2023-10-29 22:21:26 27 4
gpt4 key购买 nike

我遇到了一个问题。我想反序列化来自服务器的复杂 JSON 响应,但我只需要它的一部分。

这是一个例子:

{
"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}
}

我还使用了 Csharp2json 来获取我需要的类对象,我只是根据需要修改了菜单类:

    public class Menuitem
{
public string value { get; set; }
public string onclick { get; set; }
}

public class Popup
{
public IList<Menuitem> menuitem { get; set; }
}

public class Menu
{
public Popup popup { get; set; }
}

public class RootObjectJourney
{
public Menu menu { get; set; }
}

现在,如果我只需要弹出值和他的子值,我该如何反序列化?

最佳答案

您实际上可以利用 NewtonSoft.Json 的 Linq 命名空间并稍微修改您的代码以仅从 JSON 获取“弹出”元素。

你的类(class)结构保持不变。确保使用命名空间

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

然后在您的代码中一旦有了 JSON 字符串,您就可以使用“JObject”静态方法“Parse”来解析 JSON,例如

   var parsedObject = JObject.Parse(jsonString);

这将为您提供 JObject,您可以使用它访问所有 J​​SON 键,就像访问字典一样。

var popupJson = parsedObject["menu"]["popup"].ToString();

这个 popupJson 现在只有弹出键的 JSON。有了这个,您可以使用 JsonConvert 来反序列化 JSON。

var popupObj = JsonConvert.DeserializeObject<Popup>(popupJson);

这个 popupObj 只有菜单项列表。

关于c# - 仅反序列化 JSON 文件的一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44701646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com