gpt4 book ai didi

javascript - .NET 创建 JSON 对象,其中值包含引号

转载 作者:行者123 更新时间:2023-12-02 14:28:32 27 4
gpt4 key购买 nike

我正在使用 Newtonsoft.Json 生成 JSON 对象:

JObject testObject = new JObject();
testObject["key"] = "\"value\"";
var result = testObject.ToString();
Console.WriteLine(result);

此操作的结果是:{ "key": "\"value\""}

但是,当我尝试使用 JS 解析它时:

var data = JSON.parse( '{ "key": "\"value\"" }' );

我收到错误:未捕获的语法错误:JSON 中位置 11 处出现意外的标记 v

如果我手动将 json 更改为:{ "key": "\\"value\\""},它会正确解析它。但是,我无法从 .NET 生成它。

我错过了什么吗?

最佳答案

Am I missing something?

您缺少的是,您尝试将 JSON 复制到 JavaScript 字符串文字中,但没有正确转义它。

如果您想将 JSON { "key": "\"value\""} 放入字符串文字中,该值包含反斜杠,因此您必须对它们进行转义:

var data = JSON.parse( '{ "key": "\\"value\\"" }' );

这正是您发现的正确工作方式。

如果您尝试运行您拥有的线路:

var data = JSON.parse( '{ "key": "\"value\"" }' );

该字符串文字的计算结果为值 { "key": ""value""},该值与 Newtonsoft 生成的 JSON 不同,并且不是有效的 JSON。

底线: 看起来您已经使用库生成了一些有效的 JSON,但随后您尝试手动复制它,并在此过程中创建了一个错误。也许这只是为了实验,但您应该设置一条路径,让 JSON 从 Newtonsoft 传递到 JavaScript,而无需人工干预。这应该可以防止像您遇到的这样的问题。

关于javascript - .NET 创建 JSON 对象,其中值包含引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38032214/

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