如何获得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对象还是有其他方法?

如何获得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);