gpt4 book ai didi

c# - 解析这种json字符串化的字符串 "{\"值\":[\"18\"]}"

转载 作者:行者123 更新时间:2023-12-02 20:53:11 25 4
gpt4 key购买 nike

我就是想不通这个。已经尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com