Json 反序列化程序



im 目前正在用 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

或者,

您可以为要返回的数据定义一个类,然后将 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"

这是一种仅获取一个项目值的快速方法,但它假设您知道它的外观和存储位置。

相关内容

  • 没有找到相关文章

最新更新