如何获得JSON值到字符串数组
本文关键字:字符串 数组 何获得 JSON | 更新日期: 2023-09-27 18:07:59
我使用VS2010与c# 4。我有一个类似于下面的JSON:
{"ItemDetails":{"Item":{"val": [
{"Description":"Desk1","Amount":"100.00"},
{"Description":"Desk2","Amount":"200.00"},
{"Description":"Desk3","Amount":"300.00"}]}}}
我想把所有的amount值放入一个字符串数组中,如下所示:
amount={100.00,200.00,300.00}
我如何实现这个?我必须循环遍历JSON对象还是有其他方法?
我建议使用NewtonSofts JSON库,但另一种(但丑陋的)方法是使用正则表达式。
var json = "{'"ItemDetails'":{'"Item'":{'"val'": [ " +
"{'"Description'":'"Desk1'",'"Amount'":'"100.00'",}," +
"{'"Description'":'"Desk2'",'"Amount'":'"200.00'",}," +
"{'"Description'":'"Desk3'",'"Amount'":'"300.00'"}}}";
// What I think you want
var amount = Regex.Matches(json, "Amount'":'"(.*?)'"").Cast<Match>().Select(m => m.Groups[1].Value).ToArray();
// Values 'converted' to json
var jsonAmount = "amount={" + string.Join(",", amount) + "}";
使用Json。Net中可以使用LINQ-to-JSON查询:
string json = @"
{
""ItemDetails"": {
""Item"": {
""val"": [
{
""Description"": ""Desk1"",
""Amount"": ""100.00""
},
{
""Description"": ""Desk2"",
""Amount"": ""200.00""
},
{
""Description"": ""Desk3"",
""Amount"": ""300.00""
}
]
}
}
}";
JToken token = JToken.Parse(json);
string[] amounts = token.SelectToken("ItemDetails.Item.val")
.Children()
.Select(t => t["Amount"].ToString())
.ToArray();
Console.WriteLine("amount={" + string.Join(",", amounts) + "}");
输出:amount={100.00,200.00,300.00}
我假设您没有使用JSON.NET。如果是这样的话,你可以试试。
它具有以下特性-
LINQ到JSONJsonSerializer用于快速地将。net对象转换为JSON并再转换回来Json。NET可以选择性地生成格式良好的缩进JSON,用于调试或显示像JsonIgnore和JsonProperty这样的属性可以添加到类中,以自定义类的序列化方式能够将JSON转换为XML支持多种平台:.NET, Silverlight和Compact Framework请看下面的例子。
在这个例子中,JsonConvert对象用于对象与JSON之间的转换。它有两个用于此目的的静态方法。它们是SerializeObject(Object obj)和DeserializeObject(String json) -
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string json = JsonConvert.SerializeObject(product);
//{
// "Name": "Apple",
// "Expiry": "2008-12-28T00:00:00",
// "Price": 3.99,
// "Sizes": [
// "Small",
// "Medium",
// "Large"
// ]
//}
Product deserializedProduct = JsonConvert.DeserializeObject(json);