当前位置: 代码迷 >> J2EE >> 这是一个JSon格式转换传输的有关问题
  详细解决方案

这是一个JSon格式转换传输的有关问题

热度:87   发布时间:2016-04-17 23:14:48.0
这是一个JSon格式转换传输的问题
这是我在网上看到的一个例子代码,用途是处理特殊字符,但是,我用的时候发现第8行会出错,第三个双引号会引住后面的语句
第10行也会出一个叫Invalid character constant的错,不知道例子里面是怎么实现的

------解决思路----------------------
引用:
Quote: 引用:

sb.append("\"");双引号要转义,可以用处理JSON的jar,比如GSON这些

我知道应该要转义,可是例子里面就没有,我就想问问他怎么实现的

例子里没有,不代表这个例子就编译成功并运行了,没有必要纠结于这些东西,了解他的思路就可以了
------解决思路----------------------
package test;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

import com.google.common.io.Resources;

public class Test {
public static void main(String[] args) throws IOException {
String str = FileUtils.readFileToString(new File(Resources.getResource("a.txt").getFile()));
System.out.println(string2Json(str));
}

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();
}
}

a.txt内容
{"name":"Michael","address":
    {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
}
运行之后的输出:
"{\"name\":\"Michael\",\"address\":\r\n    {\"city\":\"Beijing\",\"street\":\" Chaoyang Road \",\"postcode\":100025}\r\n}"

你找的代码是错误的。
  相关解决方案