如何将JSON值转换为字符串数组?

时间:2014-06-10 09:44:48

标签: c# json c#-4.0

我正在使用带有C#4的VS2010。我的JSON类似于以下内容:

{"ItemDetails":{"Item":{"val": [ 
{"Description":"Desk1","Amount":"100.00"},
{"Description":"Desk2","Amount":"200.00"},
{"Description":"Desk3","Amount":"300.00"}]}}}

我希望将所有金额值都放入一个字符串数组中,如下所示:

amount={100.00,200.00,300.00}

我怎么能实现这个?我是否必须循环访问JSON对象,还是有其他方法可以执行此操作?

3 个答案:

答案 0 :(得分:0)

我建议使用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) + "}";

答案 1 :(得分:0)

使用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}

答案 2 :(得分:-1)

我假设你没有使用JSON.NET。如果是这种情况,那么你可以尝试一下。

它具有以下功能 -

LINQ to JSON JsonSerializer用于快速将.NET对象转换为JSON并再次返回 Json.NET可以选择生成格式良好的缩进JSON,用于调试或显示 可以将类似JsonIgnore和JsonProperty的属性添加到类中以自定义类的序列化方式 能够将JSON转换为XML和从XML转换 支持多种平台:.NET,Silverlight和Compact Framework 看下面的例子。

在这个example中,JsonConvert对象用于将对象转换为JSON和从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);