Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将JSON值放入字符串数组?_C#_Json_C# 4.0 - Fatal编程技术网

C# 如何将JSON值放入字符串数组?

C# 如何将JSON值放入字符串数组?,c#,json,c#-4.0,C#,Json,C# 4.0,我将VS2010与C4一起使用。我有类似于以下内容的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

我将VS2010与C4一起使用。我有类似于以下内容的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对象,或者是否有其他方法来执行此操作?

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

它有以下特点-

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

在这种情况下,JsonConvert对象用于在JSON之间转换对象。为此,它有两种静态方法。它们是序列化ObjectObject obj和反序列化ObjectString 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.DeserializeObjectjson

我建议使用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) + "}";
使用,您可以通过查询执行此操作:

输出:

amount={100.00,200.00,300.00}

你在哪个平台上工作?Windows 8有API,在其他平台上,您可能会使用Newtonsoft提供的JSON.Net。->我从您添加的VS2010到您不是为Windows 8开发的问题。然后使用JSON.NET Nuget包。在发布类似这样的常见问题之前搜索此网站,网站上有大量的结果,例如它本身包含许多人的帮助。我是否必须循环通过Josn对象->您可以使用Linq查询。但这是关于Linq还是关于JSON解析的问题?请说得更准确些。-1这不能回答问题。考虑到问题中的JSON,如何将数量值放入数组中?我明白你的意思,但我只是尝试给他一个使用它的示例。如果JSON中有空格呢?那么它将无法正常工作。您需要在模式中添加对此的支持。添加\s以忽略某些位置的空白。例如:金额\\s:\s\.*?\。但正如我所说,我建议使用NewtonSofts JSON库或其他JSON库。另外,您有.NET的JavaScriptSerializer,但这不是一个很好的。至少还没有:同意,使用正则表达式解析JSON不是一个好主意。最好使用适当的解析器。
amount={100.00,200.00,300.00}