C# 如何使用.NET JavaScriptSerializer类反序列化以下JSON字符串?
我有以下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
[{"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();