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

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 str[] = sb.toString().toCharArray();
        for(int i=0;i<str.length;i++){
            System.out.println(str[i]);
}

这部分输出时,第一个char为空
多一个字符原因:
用文本编辑器(notepad++)打开test.txt文本文件

报错,java,json,text,数据0
第一次选择的是红框的编码,这样读出来的字符串长度总是为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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值