[英]Json deserializer
即时通讯目前使我的第一个陡峭的json和即时通讯完全困惑。 我发现了很多示例,如何反序列化json文件,但没有任何帮助。
{
"102": {
"id": 102,
"name": "cvmember3",
"profileIconId": 28,
"revisionDate": 1373593599000,
"summonerLevel": 1
},
"101": {
"id": 101,
"name": "IS1ec76a704e9b52",
"profileIconId": -1,
"revisionDate": 1355466175000,
"summonerLevel": 1
}
}
这是我得到的json对象,问题是即时通讯将其反序列化。 我到目前为止一直在尝试:
String name= (string) new JavaScriptSerializer().Deserialize<Dictionary<String, object>>(json)["name"];
我错过了索引,并且不知道如何将其添加到任何人,可以说出要反序列化的正确行,我可以访问libary json.net
另外,您可以为要返回的数据定义一个类,然后将JSON解析为字典,如下所示:
public class DataClass
{
public int id;
public string name;
public int profileIconId;
public long revisionDate;
public int summonerLevel;
}
然后
Dictionary<int, DataClass> myDictionary = JsonConvert.DeserializeObject<Dictionary<int, DataClass>>(json);
string foundName = myDictionary[102].name;
如果您只想从字符串中选择一项( i only need to get one arttribut
),则可以使用NewtonSoft找出您需要的项目:
using Newtonsoft.Json.Linq;
// read from where ever
string jstr = File.ReadAllText("C:\\Temp\\101.json");
JObject js = JObject.Parse(jstr);
var data102 = js["102"]["name"]; // == "cvmember3"
var data101 = js["101"]["name"]; // == "IS1ec76a704e9b52"
Console.WriteLine("Name for 101 is '{0}'", data101.ToString());
Console.WriteLine("Name for 102 is '{0}'", data102.ToString());
输出:
101的名称是“ IS1ec76a704e9b52”
102的名称为'cvmember3'
这是一种仅获取一项值的快速方法,但它假设您知道它的外观以及存储位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.