json数据如下:
代码如下:
错误如下:
?{"success":true,"msg":"成功"} 代码如下:
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import net.sf.json.JSONObject;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
try {
File file = new File("e:\\test.txt");
InputStreamReader read = new InputStreamReader(new FileInputStream(
file),"UTF-8");// 考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while ((lineTxt = bufferedReader.readLine()) != null) {
sb.append(lineTxt);
}
} catch (Exception e) {
e.printStackTrace();
}
String json =sb.toString();
System.out.println(json);
JSONObject jsonobject=JSONObject.fromObject(json);
System.out.println(jsonobject);
}
}
错误如下:
{"success":true,"msg":"成功"}
Exception in thread "main" net.sf.json.JSONException: A JSONObject text must begin with '{' at character 1 of ?{"success":true,"msg":"成功"}
at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:527)
at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1112)
at net.sf.json.JSONObject._fromString(JSONObject.java:1337)
at net.sf.json.JSONObject.fromObject(JSONObject.java:187)
at net.sf.json.JSONObject.fromObject(JSONObject.java:156)
at test.Test.main(Test.java:34)
实际上你读出来的字符串长度有问题,按道理讲应该是27,但是实际上长度为28,前面多了一个空字符
这部分输出时,第一个char为空
char str[] = sb.toString().toCharArray();
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
} 这部分输出时,第一个char为空
多一个字符原因:
用文本编辑器(notepad++)打开test.txt文本文件

第一次选择的是红框的编码,这样读出来的字符串长度总是为28(莫名的多了一个字符),会报异常,因为第一个字符不是‘{’
第二次选择的是蓝框的编码,这样读出来的字符串长度就是27,和我们认为的长度一样,也不会报异常
后台 : 用文本编辑器(notepad++)打开test.txt文本文件

第一次选择的是红框的编码,这样读出来的字符串长度总是为28(莫名的多了一个字符),会报异常,因为第一个字符不是‘{’
第二次选择的是蓝框的编码,这样读出来的字符串长度就是27,和我们认为的长度一样,也不会报异常
String json = "{success:true,msg:'成功'}";
return json ;
如果是json串里需要用到变量,可以这样写:
比如变量为 temple
String json = "{success:\""+temple+"\",msg:'成功'}";
return json ;
前台页面:
Ajax执行成功的返回方法
var responseText = response.responseText;
var data = eval('('+responseText+')');
alert(data.success);
alert(data.msg);
本文探讨了在处理JSON数据时遇到的编码问题,详细解释了如何正确读取并解析包含特定格式的JSON字符串,避免因编码差异导致的错误。通过实例展示了不同编码设置下字符串长度的差异及对JSON解析的影响,并提供了相应的解决方案。
2747

被折叠的 条评论
为什么被折叠?



