bun*_*aka 1 c# serialization json json.net
我就是想不通这个。已经尝试过 JsonConvert.SerializeObject(item) 并且我也得到了一个奇怪的字符串。
我怎样才能从这个字符串化的字符串中取出值?
"{\"value\":[\"18\"]}"
Run Code Online (Sandbox Code Playgroud)
编辑@
这是我对其进行字符串化的地方:
var data = new FormData();
data.append('cates', JSON.stringify(toSend));
Run Code Online (Sandbox Code Playgroud)
这是我从模型>道具列表中得到的输出
https://gyazo.com/b9a6f212345b854796af3d80e4169a23
@反序列化
foreach (var item in data.cates)
{
var l = JsonConvert.DeserializeObject(item);
}
Run Code Online (Sandbox Code Playgroud)
看起来好像您的 JSON 已被双重序列化,即一个对象被序列化为 JSON,然后该字符串再次被序列化。有关如何使用 asp.net-web-api 轻松犯此错误的示例,请参阅JSON.NET Parser似乎正在双重序列化我的对象。
解决该问题的最佳方法是一开始不要对 JSON 进行双重序列化。如果由于某种原因无法修复此问题(因为例如,双序列化 JSON 是从您无法修改的某些 3rd 方服务返回的),您也可以始终反序列化两次:
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
Run Code Online (Sandbox Code Playgroud)
对于根对象使用:
public class RootObject
{
public List<string> value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3829 次 |
最近记录: |