如何用newtonjson解析c#中的json?
我是c#新手,有一个json字符串:如何用newtonjson解析c#中的json?,c#,json,C#,Json,我是c#新手,有一个json字符串: "{\"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}" 尝试用以下代
"{\"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}"
尝试用以下代码分析该字符串:
dynamic dynObj = JsonConvert.DeserializeObject(html);
但是我想要访问例如数组索引0或数组索引1,我如何才能为此编写代码?谢谢。不要使用
动态
,除非没有其他选项来解决您的问题。以下是如何创建类型以映射数据:
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
}
}
私有结构数据持有者
{
公共十进制结果{set;get;}
公共包[]包{set;get;}
公共bool IsArbitrary{set;get;}
}
私有结构包
{
公共十进制计数{set;get;}
公共十进制价格{set;get;}
}
静态void Main(字符串[]参数)
{
字符串html=“{\'Result\':0,\'Packages\':[{\'Count\':5.0,\'Price\':100000},{\'Count\':10.0,\'Price\':170000},{\'Count\':20.0,\'Price\':300000},{\'Count\'Price\':600000},{\'Count\'Count\'100.0,\'Price\':900000},\'isarbiry\':true};
DataHolder data=JsonConvert.DeserializeObject(html);
foreach(data.Packages中的var包)
{
//对包装做点什么。数数或包装。价格
}
}
然后您就有了一个静态对象,可以在其中访问
包
并在其上循环。不要使用动态
,除非没有其他选项来解决您的问题。以下是如何创建类型以映射数据:
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
}
}
私有结构数据持有者
{
公共十进制结果{set;get;}
公共包[]包{set;get;}
公共bool IsArbitrary{set;get;}
}
私有结构包
{
公共十进制计数{set;get;}
公共十进制价格{set;get;}
}
静态void Main(字符串[]参数)
{
字符串html=“{\'Result\':0,\'Packages\':[{\'Count\':5.0,\'Price\':100000},{\'Count\':10.0,\'Price\':170000},{\'Count\':20.0,\'Price\':300000},{\'Count\'Price\':600000},{\'Count\'Count\'100.0,\'Price\':900000},\'isarbiry\':true};
DataHolder data=JsonConvert.DeserializeObject(html);
foreach(data.Packages中的var包)
{
//对包装做点什么。数数或包装。价格
}
}
然后你有一个静态对象,你可以访问
包并在其上循环。谢谢,这是真的,现在我如何向用户显示for-loop数据?谢谢,这是真的,现在我如何向用户显示for-loop数据?