将 String 对象编码为 JSON 格式时,只需处理好特殊字符即可。另外,必须用 (") 而非 (') 表示字符串:
代码如下 | 复制代码 |
static String string2Json(String s) { StringBuilder sb = new StringBuilder(s.length()+20); sb.append('"'); for (int i=0; i<s.length(); i++) { char c = s.charAt(i); switch (c) { case '"': sb.append("\""); break; case '\': sb.append("\\"); break; case '/': sb.append("\/"); break; case 'b': sb.append("\b"); break; case 'f': sb.append("\f"); break; case 'n': sb.append("\n"); break; case 'r': sb.append("\r"); break; case 't': sb.append("\t"); break; default: sb.append(c); } } sb.append('"'); return sb.toString(); } |
2,在PHP中的应用。
PHP中使用json_encode和json_decode来进行JSON封装和拆装。
封装string类型数据:json_encode在输出结果中,会在源字符串两端加上("),如对象内容是(abc),结果是("abc”)
封装stdClass对象类型数据:比如有个"value”成员内容是字符串,结果是:{"value":"u5e7fu4e1cu4f53u80b2,CCTV5"}
3,为什么要写这个。
ZenTaoPHP框架中,请求类型如果是“json”,输出结果会以JSON格式封装,但在对输出信息进行分析时,发现并非标准的JSON格式。
深究后,发现ZenTaoPHP对一部分数据进行了二次JSON封装,输出类似:"{"value":"\u5e7f\u4e1c\u4f53"}" 这样的结果
时间: 2024-08-26 09:19:54