Java:想要解析JSON,但是遇到好多双引号,该如何处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:想要解析JSON,但是遇到好多双引号,该如何处理相关的知识,希望对你有一定的参考价值。

public static void main(String[] args)
String json='"response":"data":["address":"南京市游乐园","province":"江苏","district":"玄武区","city":"南京"],"status":"ok"';


难道需要为每个双引号都转义吗?

参考技术A json的解析有很多现成的

json-lib

gson

你要自己造轮胎么本回答被提问者采纳
参考技术B 是的 ,转义一下就行

带单引号和双引号的 JSON.parse 字符串?

【中文标题】带单引号和双引号的 JSON.parse 字符串?【英文标题】:JSON.parse string with single and double quotes? 【发布时间】:2017-02-26 13:07:37 【问题描述】:

我将一个数组保存为 json 并在加载时再次解析它。但是,在添加了带有单引号和双引号的 HTML 之后,这已经停止工作了。

我怎样才能转义引号?

JSON.parse('[["",null,null,null,null,null,"","","<span onclick=insertRow()><i class='fa fa-plus-circle fa-lg'></i></span>"]]');

uncaught SyntaxError: missing ) after argument list

编辑:

我的字符串使用 JSON.stringify 保存在数据库中。它以以下格式结束:

[["ad",null,true,false,true,false,"","","<span onclick=insertRow()><i class='fa fa-plus-circle fa-lg'></i></span>"]]

当我再次加载它时,我会这样做:

var phpsave = JSON.parse('<?php echo $result->save; ?>');

如果我在保存之前转义了单引号,则转义在加载时就会消失..

【问题讨论】:

这与 JSON 无关。这只是一个无效的字符串文字。 你是如何编码 JSON 的?你怎么加载它?你有一个问题,因为你有一个带单引号的字符串作为单引号内的 Javascript 文字。我怀疑这就是您在实践中实际加载 JSON 字符串的方式! 为什么在 JS 代码中使用 JSON 字符串,而不是简单的数组字面量? 请看我的编辑。 【参考方案1】:

您正在动态生成 Javascript 源代码。您需要确保您生成的内容在语法上是有效的。从 PHP 生成有效 Javascript 文字的最简单方法是使用 json_encode:

var phpsave = JSON.parse(<?php echo json_encode($result->save); ?>);
// look ma, no quotes!   ^                                       ^

但是等等,你不是将 JSON 传递给你的 Javascript 吗? JSON不是已经有效的Javascript吗?为什么,是的,是的。所以你可以省略这一步:

var phpsave = <?php echo $result->save; ?>;

当然,在开始输出随机 Javascript 代码之前,您可能需要确保真的首先在此处传递有效的 JSON。

【讨论】:

+1 表示正确的方法,但actually JSON isn't always valid JS。并且根据它在哪里回显,仍然可能需要逃避诸如&lt;/script&gt;之类的东西。【参考方案2】:

你可以像逃避它一样

 var r = JSON.parse('[["",null,null,null,null,null,"","","<span onclick=insertRow()><i class=\'fa fa- plus - circle fa- lg\'></i></span>"]]');

【讨论】:

如果我在保存之前这样做,再次加载时 \ 就消失了。请查看我的编辑问题。

以上是关于Java:想要解析JSON,但是遇到好多双引号,该如何处理的主要内容,如果未能解决你的问题,请参考以下文章

解决json string转object,value值存在英语双引号,无法解析问题。以及遇到value值中有双引号,如何解析成功。

如何在ios中将字典的双引号数组解析为json?

C# json字符串解析含有双引号

如何删除 jq 输出中的双引号以在 bash 中解析 json 文件?

如何删除 jq 输出中的双引号以在 bash 中解析 json 文件?

JSON解析错误,出现双引号,反斜杠处理办法