Java中json数据问题.老报错 A JSONObject text must begin with '{'

J2EE 码拜 8年前 (2016-05-29) 3899次浏览
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)

新手,求指导

解决方案

20

多一个字符原因:
用文本编辑器(notepad++)打开test.txt文本文件
Java中json数据问题.老报错 A JSONObject text must begin with '{'
第一次选择的是红框的编码,这样读出来的字符串长度总是为28(莫名的多了一个字符),会报异常,原因是第一个字符不是‘{’
第二次选择的是蓝框的编码,这样读出来的字符串长度就是27,和我们认为的长度一样,也不会报异常

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Java中json数据问题.老报错 A JSONObject text must begin with '{'
喜欢 (0)
[1034331897@qq.com]
分享 (0)