读取序列化JSON

时间:2016-05-26 05:53:06

标签: c# json javascriptserializer

我正在尝试从反序列化的JSON对象中获取第一项的名称。 当我调试代码时,我发现jsonObject被转换为字典。 如何从jsonObject获取第一个项目值。

var myJson= [
{name:'abc',city:'dallas'},
{name:'def',city:'redmond'},
{name:'ghi',city:'bellevue'},
]

JavaScriptSerializer jss = new JavaScriptSerializer();
var jsonObject = jss.Deserialize<dynamic>(myJson);

NameInFirstItem = jsonObject[0].name;

3 个答案:

答案 0 :(得分:1)

试试这个:

var NameInFirstItem = jsonObject[0]["name"];

答案 1 :(得分:1)

您可以使用

反序列化json
     public class Details
        {
            public string name { get; set; }
            public string city { get; set; }
        }

  var res = JsonConvert.DeserializeObject<Details[]>(json);
  var name = res[0].name;

答案 2 :(得分:1)

创建一个class来保存您的结果对象:

public class MyJsonResult
{
    public string name { set; get; }
    public string result { set; get; }
}

static void Main(string[] args)
{
    string myJson = "[{ name: 'abc',city: 'dallas'},{ name: 'def',city: 'redmond'},{ name: 'ghi',city: 'bellevue'}]";

    JavaScriptSerializer jss = new JavaScriptSerializer();
    List<MyJsonResult> jsonResultList = jss.Deserialize<List<MyJsonResult>>(myJson);

    var NameInFirstItem = jsonResultList.FirstOrDefault().name;
}

或者如果您坚持使用动态:

static void Main(string[] args)
{
    string myJson = "[{ name: 'abc',city: 'dallas'},{ name: 'def',city: 'redmond'},{ name: 'ghi',city: 'bellevue'}]";

    JavaScriptSerializer jss = new JavaScriptSerializer();
    var jsonResultList = jss.Deserialize<List<dynamic>>(myJson);

    // get first value by key from the dictionary
    var NameInFirstItem = jsonResultList.FirstOrDefault()["name"];
}

我更喜欢第一种方法。如果向json添加第三个属性,则可能会对生成的对象的类型感到困惑,这可能是列表中每个对象的键值对列表。