我想将复杂的JSON表示/转换为C#字典。
杰森
{
"58": { "Power": 26, "Mantissa": 58},
"59": { "Power": 27, "Mantissa": 59},
"60": { "Power": 28, "Mantissa": 60},
"64": { "Power": 0, "Mantissa": 64},
"65": { "Power": 0, "Mantissa": 64},
"66": { "Power": 1, "Mantissa": 65}
}我认为它可以用C#中的字典来表示
Dictionary<string, List<Dictionary<string, int>>> dict = new Dictionary<string, List<Dictionary<string, int>>>();我不知道如何实现这种数据结构。请帮帮忙。
发布于 2017-04-03 15:05:22
JSON.NET将能够反序列化您的json:
var dict = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string,int>>>(json);您已经接近了,但是您忽略了外部字典应该以string作为键类型。
虽然我认为使用Dictionary<string,int>作为外部字典值类型不是很好的决定:
Power值和Mantissa值。其他开发人员不会猜测他们应该在字典中查找哪些键。没有错误输入Matnissa而不是尾数。将其与自定义类的用法进行比较:
public class Number
{
public int Power { get; set; }
public int Mantissa { get; set; }
}解析几乎是一样的:
var numbers = JsonConvert.DeserializeObject<Dictionary<string, Number>>(json);但是访问值要简单得多,速度更快:
numbers["60"].Mantissa // numbers["60"]["Manitssa"].Value发布于 2017-04-03 14:58:47
就试着:
public class YourObject{
public int Power {get;set;}
public int Mantissa {get;set;}
}之后,可以使用Json.NET将JSON转换为YourObject列表:
List<YourObject> list = JsonConvert.DeserializeObject<List<YourObject>>(yourJSONString);发布于 2017-04-03 15:05:54
太简单了。首先,我们需要这样的对象:
public class YourObject
{
public int Power { get; set; }
public int Mantissa { get; set; }
}那就试试这个:
var x = JsonConvert.DeserializeObject<Dictionary<string, YourObject>>(richTextBox1.Text);https://stackoverflow.com/questions/43187818
复制相似问题