gpt4 book ai didi

c# - 如何使用变量名以 _ 或 $ 开头的对象列表反序列化 JSON 响应

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:41 25 4
gpt4 key购买 nike

如何像这样反序列化网络响应:

[{"_exp":"2014-06-05T23:58:03.859Z","_id":"123","$val":"dabg"}, 
{"_exp":"2014-07-05T23:58:03.859Z","_id":"143","$val":"dabg"}]

这里我的具体问题是我无法创建一个变量名称以 $ 开头的响应类,因为 C# 不支持这种类型的命名约定...

最佳答案

您可以手动反序列化到您的模型类中,从而允许您将 json 属性重命名为有效的 C# 属性。这是一个使用 JSON.NET 的例子.

List<Model> list = new List<Model>();

JArray array = JArray.Parse(json);
foreach (JObject item in array)
{
list.Add(new Model() {
Exp = item.Value<DateTime>("_exp"),
Id = item.Value<int>("_id"),
Val = item.Value<string>("$val")
});
}

public class Model
{
public DateTime Exp { get; set; }
public int Id { get; set; }
public string Val { get; set ;}
}

另一种选择是将 $val 替换为 _val。属性名称可以以 _ 开头,因此其他两个是有效的。这将允许自动反序列化为模型。添加的引号和冒号将允许它仅以属性名称 "$val": 为目标,这样您就不会不小心替换属性值。

string newJson = json.Replace("\"$val\":", "\"_val\":");
Model[] models = JsonConvert.Deserialize<Model[]>(newJson);

public class Model
{
public string _val { get; set; }
public DateTime _exp { get; set; }
public int _id { get; set; }
}

关于c# - 如何使用变量名以 _ 或 $ 开头的对象列表反序列化 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25108769/

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