我在这里找不到类似的案子,因此我的问题。我有一个像这样的json:
{
"prop1": "bla",
"propn": "bla",
"Data": {
"42": {
"prop1": "bla",
"prop2": "bla",
"Symbol": "42"
},
"abc": {
"prop1": "bla",
"prop2": "bla",
"Symbol": "abc"
}
},
"Type": 100
}
现在,我如何从Data中获取所有元素,并且我对那些具有symbol属性集的元素感兴趣。我尝试过Newtonsoft.json.linq和jobject,但实际上并不知道该怎么做。有人指导吗?谢谢! 罗纳德
答案 0 :(得分:1)
您正在寻找的内容称为'反序列化'。你有一个字符串(你发布的json),你想把它变成一个对象。
您需要做的第一步是:
RootObject
更改为更具描述性的内容来清理它。现在您可以使用MyClass myObject = JsonConvert.DeserializeObject<MyClass>(myString);
要访问Symbol
,只需使用myObject.Data.Symbol
答案 1 :(得分:0)
我想,一旦你从json中提取部分数据,如果你仍然需要通过你的应用程序传递数据,那么专用模型就会派上用场。
public class Data
{
public Element abc { get; set; }
}
public class Element
{
public string prop1 { get; set; }
public string prop2 { get; set; }
public string Symbol { get; set; }
}
虽然您当然可以依赖JObject处理反序列化,但我发现使用anonymous templates更直观,特别是对于部分数据检索。
var template = new
{
Data = default(Data)
};
var instance = JsonConvert.DeserializeAnonymousType(json, template);
会给你类似的东西
答案 2 :(得分:0)
我建议你使用Jil库,比Newtonsoft.json更快更简单