gpt4 book ai didi

c# - 将 JSON 解析为 C# 对象,其中 "0"作为 JSON 字符串中的对象名称

转载 作者:行者123 更新时间:2023-11-30 19:59:49 24 4
gpt4 key购买 nike

我收到一个 JSON 对象来启动网络 session ,使用 MVC4。我需要将其解析为 C# 对象以备后用。我无法更改收到的对象 - 它来自第三方。

我用来解析的方法:

MyClass jsonObject = new MyClass();

//The 2 lines below will not work with the given answer
//JavaScriptSerializer serializer = new JavaScriptSerializer();
//jsonObject = serializer.Deserialize<MyClass >(jsonString);

//Use this method instead
jsonObject = JsonConvert.DeserializeObject<MyClass>(jsonString);

问题:由于内部对象的名称为“0”,我在为这部分 JSON 定义 C# 类时遇到了问题。

JSON:

{
"header": {
"to": {
"data": [],
"0": {
"data": [],
"value": "1101",
"domain": "DUNS"
}
},
"from": {
"data": [],
"0": {
"data": [],
"value": "1101",
"domain": "NetworkID"
}
},
"sender": {
"data": {
"UserAgent": "Test Client v1"
},
"0": {
"data": {
"SharedSecret": "test"
},
"value": "testing@smith.com",
"domain": "testClientID"
}
}
},
...
}

注意:我尝试过将 json 在线生成到 C# 类生成器,要么失败,要么创建一个名称为“0”的类,当然无法编译。

评论:MyClass 会是这样的:

public class Header
{
public ToClass to = new ToClass ();
public FromClass to = new FromClass ();
}

public class ToClass
{
public Data[];
public zero 0 = new zero();
}

public class zero
{
public string data { get; set; }
public string value { get; set; }
public string domain { get; set; }
}

最佳答案

我相信你可以使用 json.NET 的属性系统来纠正这个问题,文档在这里。 http://james.newtonking.com/json/help/index.html?topic=html/SerializationAttributes.htm

public class ToClass 
{
public Data[];
[JsonProperty(PropertyName = "0")]
public zero Zero = new zero();
}

这将使反序列化器将名为 0 的 json 属性与名为 Zero 的 C# 属性等同起来

关于c# - 将 JSON 解析为 C# 对象,其中 "0"作为 JSON 字符串中的对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22767717/

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