如何向客户端返回带有双引号的字符串?脚本将其解析为JSON对象

How can I return a string with double quotes to a client script parse it into JSON objects?

本文关键字:脚本 对象 JSON 字符串 返回 客户端      更新时间:2024-04-10

我有一个WebMethod,它由JavaScript调用以从数据库中获取数据。数据库对此是禁止的,所以我不能在那里更改任何内容。我想用JavaScript做这件事。

当字符串到达JavaScript:时,它看起来是这样的

"[{"id":"0", "value":"Avery Bradley"},{"id":"31", "value":"Jason "Jet" Terry"}]"

我已尝试替换(''"', ''''"')以添加转义符。我让它以Replace("'"", "'''"")的方式在.NET端工作。然而,这是一个将使用它的独立控件,并且应该进行验证。

我做错了什么?

函数GetDataCallBack(childId、senderParam、senderValue、callback){var值;

$.ajax({
    type: "POST",
    async: false,
    url: callback,
    data: "{'id': '" + childId + "', 'parameter': '" + senderParam + "', 'value': '" + senderValue + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (json) {
        values = json.d;
    }
});
return values;

}

问题出在服务器端。它正在提供无效的JSON。具体来说,这是数组中的最后一个对象:

"value":"Jason "Jet" Terry"

"Jet"周围的那些引号需要转义。服务器正在为您提供无效的JSON。

您可以尝试更正损坏的JSON,但它会很笨拙,而且可能不完美。

服务器端需要进行修复,以便提供有效的JSON。

我认为你在这里做错了什么。JSON文件应该只是JSON,而不是其他文件。它不应该是JSON的字符串表示,JSON将字符串解析为字符串,然后从那里解析为对象——只需将文件/流/任何内容视为字符串即可。

如果需要将JSON嵌入某些标记(XML、HTML)中,请在JSON字符串中使用该语言的指定转义方法。

如果您需要将JSON嵌入到某个程序文件中,请尝试使用编码对象的匹配文字表示(例如,在Javascript中非常容易)。如果您使用的语言没有很好的表达,请将其存储到一个额外的文本文件中,然后从中读取。