json_encode在编码字符串时会自动加上双引号,怎么能去掉?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json_encode在编码字符串时会自动加上双引号,怎么能去掉?相关的知识,希望对你有一定的参考价值。
比如echo json_encode('你好'),会输出 "\u4f60\u597d"
有些情况是不需要这个引号的,除了替换有什么好办法能去掉吗?
我就是要编码成\u**,而是不要编码后那个引号
参考技术A echo trim(json_encode('你好'),'"');追问哦,谢谢,虽然还是类似替换,但也能解决问题
追答去除跟替换为空是两个概念
如何使JSONObject的toString()将UTF-8字符编码为unicode,就像在PHP的json_encode中一样?
在Java(使用Android)中,以下是代码行:
org.json.JSONObject array = new org.json.JSONObject("{"value":"aész"");
System.out.println("RES: " + array.toString());
我想要的输出:
RES:{“value”:“a u00e9sz”}
它实际上是:
RES:{“value”:“aész”}
如何使JSONObject toString()
方法返回使用UTF-8特殊字符中的unicode值编码的JSON字符串,如json_encode(array("value", "aész"));
提前致谢。
这听起来更像是罐子问题。 JsonObject是各种开源库中使用的类。下载这个罐子json-rpc-1.0.jar
试试这个:
JSONObject json = new JSONObject();
json.put("value", "aész");
System.out.println(json.toString());
产生:
{"Name":"u00e9sz"}
我想你想要的是ISO-8859-1编码。这是一个很好的答案:Converting UTF-8 to ISO-8859-1 in Java - how to keep it as single byte
如果希望它转义所有非ASCII字符,则需要构建自己的org.json.JSONObject类。
您需要修改的方法的签名是
public static Writer quote(String string, Writer w) throws IOException
它在JSONObject.java中声明。它是负责格式化生成的json字符串中的所有字符串值的方法。它遍历源字符串的所有字符并发出相应的输出字符。
您正在寻找的是在switch语句的“默认”部分。
原始代码(至少在我正在观看的来源中)看起来像这样:
default:
if (c < ' ' || (c >= 'u0080' && c < 'u00a0')
|| (c >= 'u2000' && c < 'u2100')) {
w.write("\u");
hhhh = Integer.toHexString(c);
w.write("0000", 0, 4 - hhhh.length());
w.write(hhhh);
} else {
w.write(c);
}
您需要更改“if”测试以匹配您要转义的所有字符。
这样做你想要的:
default:
if (c < ' ' || c >= 'u0080') {
w.write("\u");
hhhh = Integer.toHexString(c);
w.write("0000", 0, 4 - hhhh.length());
w.write(hhhh);
} else {
w.write(c);
}
希望这可以帮助。
P.S:我遇到了你的问题,因为我遇到了同样的问题:我生成的json字符串需要通过一个只接受ascii字符并破坏任何字符> 127的系统。
以上是关于json_encode在编码字符串时会自动加上双引号,怎么能去掉?的主要内容,如果未能解决你的问题,请参考以下文章
对数组内容使用了json_encode返回汉字内容返回了空值