解析这种json字符串化字符串 "{\"value\":[\"18\"]}"

2023-12-29

我就是想不通这个问题。 已经尝试使用 JsonConvert.SerializeObject(item) ,我也得到了一个奇怪的字符串。

如何从这个字符串化字符串中取出价值?

"{\"value\":[\"18\"]}"

Edit@

这是我将其字符串化的地方:

    var data = new FormData();
    data.append('cates', JSON.stringify(toSend));

这是我从 model > props list 得到的输出

https://gyazo.com/b9a6f212345b854796af3d80e4169a23 https://gyazo.com/b9a6f212345b854796af3d80e4169a23

@反序列化

        foreach (var item in data.cates)
        {
            var l = JsonConvert.DeserializeObject(item);
        }

看起来好像您的 JSON 已被双重序列化,即一个对象被序列化为 JSON,然后该字符串被序列化again. See JSON.NET 解析器seems双重序列化我的对象 https://stackoverflow.com/questions/25559179/json-net-parser-seems-to-be-double-serializing-my-objects有关如何使用 asp.net-web-api 轻松犯此错误的示例。

解决该问题的最佳方法是一开始就不要对 JSON 进行双重序列化。如果由于某种原因无法修复此问题(例如,因为双序列化 JSON 是从某些无法修改的第三方服务返回的),您也可以随时反序列化两次:

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; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解析这种json字符串化字符串 "{\"value\":[\"18\"]}" 的相关文章

随机推荐