Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.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# 如何使用.NET JavaScriptSerializer类反序列化以下JSON字符串?_C#_Json_Javascriptserializer - Fatal编程技术网

C# 如何使用.NET JavaScriptSerializer类反序列化以下JSON字符串?

C# 如何使用.NET JavaScriptSerializer类反序列化以下JSON字符串?,c#,json,javascriptserializer,C#,Json,Javascriptserializer,我有以下JSON对象: [{"newValue":"{\"id\":\"1\",\"desc\":\"description\"}", "oldValue":"{\"id\":\"2\",\"desc\":\"description2\"}"}] newValueis保存我要反序列化到的对象的新值,而oldValue包含我要反序列化到的对象的旧值,但我不确定如何单独反序列化每个值,或者可以一起反序列化?您的json有点奇怪,因为newValue和oldValue的值是字符串,而不是object

我有以下JSON对象:

[{"newValue":"{\"id\":\"1\",\"desc\":\"description\"}",
"oldValue":"{\"id\":\"2\",\"desc\":\"description2\"}"}]

newValue
is保存我要反序列化到的对象的新值,而
oldValue
包含我要反序列化到的对象的旧值,但我不确定如何单独反序列化每个值,或者可以一起反序列化?

您的json有点奇怪,因为newValue和oldValue的值是字符串,而不是object。它们似乎是双重序列化的。下面的代码起作用(首先反序列化整个json字符串,然后反序列化旧/新/值)


这不应该标记为javascript而不是C#吗?除非它是在C代码的服务器端发生的,请将标记更改为javascript。我同意@evanmcdonnal的问题:这是在C代码还是javascript上?@AndreCalil-我使用的是.NET中的JavaScriptSerializer,所以我使用了这两个标记。@I4V-原始字符串每个大约有100个字符串,所以我只是缩短了它。在这样做时,我可能取出了一些
没有建设性的响应。我正在对它们调用JSON.stringify,如果我不这样做会更好吗?JArray代表一个@QtX-没有JSON.Net可以吗?@QtX-如果我的对象包含100行,我是否必须在anon变量中显式声明它们中的每一行?@Xaisoft 1)而没有JSON.Net?我认为你应该自己找到它(也许有人可以使用其他序列化程序发布答案)。我通常使用Json.Net 2)不,只要属性(名称及其类型)相等,一个
anon
就足够了
var jArr = JArray.Parse(json);
var anon = new { id = 0, desc = "" };
var items = jArr.Select(item => new
             {
                 NewValue = JsonConvert.DeserializeAnonymousType(item["newValue"].ToString(),anon),
                 OldValue = JsonConvert.DeserializeAnonymousType(item["oldValue"].ToString(),anon)
             })
             .ToList();