我就是想不通这个。 已经尝试使用 JsonConvert.SerializeObject(item) 并且我也得到了一个奇怪的字符串。
如何从这个字符串化的字符串中取出值?
"{\"value\":[\"18\"]}"
编辑@
这是我对其进行字符串化的地方:
var data = new FormData();
data.append('cates', JSON.stringify(toSend));
这是我从模型 > Prop 列表中得到的输出
https://gyazo.com/b9a6f212345b854796af3d80e4169a23
@反序列化
foreach (var item in data.cates)
{
var l = JsonConvert.DeserializeObject(item);
}
最佳答案
看起来您的 JSON 已被双重序列化,即一个对象被序列化为 JSON,然后该字符串被再次序列化。参见 JSON.NET Parser seems to be double serializing my objects有关如何使用 asp.net-web-api 轻松犯此错误的示例。
解决该问题的最佳方法是一开始就不要对 JSON 进行双重序列化。如果出于某种原因这无法修复(因为例如双重序列化的 JSON 是从某些您无法修改的第 3 方服务返回的),您也可以随时反序列化两次:
var json = @"""{\""value\"":[\""18\""]}""";
Console.WriteLine("JSON: ");
Console.WriteLine(json); // Prints "{\"value\":[\"18\"]}"
var intermediateJson = JsonConvert.DeserializeObject<string>(json);
var root = JsonConvert.DeserializeObject<RootObject>(intermediateJson);
Console.WriteLine("Reserialized root: ");
Console.WriteLine(JsonConvert.SerializeObject(root)); // Prints {"value":["18"]}
Console.WriteLine("value:");
Console.WriteLine(root.value.First()); // Prints 18
对根对象使用:
public class RootObject
{
public List<string> value { get; set; }
}
关于c# - 解析这种json字符串化的字符串 "{\"值\":[\"18\"]}",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41454690/