Json 解串器
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"];
我缺少索引,不知道如何添加它
任何人都可以告诉我正确的反序列化行,我可以访问库 json.net
如果你只想要字符串中的一项(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());
输出:
Name for 101 is 'IS1ec76a704e9b52'
Name for 102 is 'cvmember3'
这是一种仅获取一个项目值的快速方法,但它假设您知道它的外观和存储位置。
或者,您可以为要返回的数据定义一个 class,然后将您的 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;
我目前正在用 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"];
我缺少索引,不知道如何添加它 任何人都可以告诉我正确的反序列化行,我可以访问库 json.net
如果你只想要字符串中的一项(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());
输出:
Name for 101 is 'IS1ec76a704e9b52'
Name for 102 is 'cvmember3'
这是一种仅获取一个项目值的快速方法,但它假设您知道它的外观和存储位置。
或者,您可以为要返回的数据定义一个 class,然后将您的 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;