我怎样才能用newtonjson解析c#中的json?

时间:2017-01-21 10:40:48

标签: c# json

我是c#中的新手,并且有这个json字符串:

company_id


尝试使用以下代码解析该字符串:

"{\"Result\":0,\"Packages\":[{\"Count\":5.0,\"Price\":100000},{\"Count\":10.0,\"Price\":170000},{\"Count\":20.0,\"Price\":300000},{\"Count\":50.0,\"Price\":600000},{\"Count\":100.0,\"Price\":900000}],\"IsArbitrary\":true}"


但我想访问例如数组索引零或数组索引一,我如何为此目的编写代码?谢谢。

1 个答案:

答案 0 :(得分:2)

除非没有其他方法可以解决您的问题,否则不要使用dynamic。以下是创建用于映射数据的类型的方法:

private struct DataHolder
{
    public decimal result { set; get; }
    public Package[] Packages { set; get; }
    public bool IsArbitrary { set; get; }
}

private struct Package
{
    public decimal Count { set; get; }
    public decimal Price { set; get; }
}

static void Main(string[] args)
{
    string html = "{\"Result\":0,\"Packages\":[{\"Count\":5.0,\"Price\":100000},{\"Count\":10.0,\"Price\":170000},{\"Count\":20.0,\"Price\":300000},{\"Count\":50.0,\"Price\":600000},{\"Count\":100.0,\"Price\":900000}],\"IsArbitrary\":true}";

    DataHolder data = JsonConvert.DeserializeObject<DataHolder>(html);

    foreach(var package in data.Packages)
    {
       // do something with package.Count or package.Price
    }
}

然后你有一个静态对象,你可以访问Packages并循环它。