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) 新人,求指导 |
|
{{“success”:true,”msg”:”成功”}}这样试试
|
|
不行呀,还是一样的错.
|
|
你要定义一个类,包含success和msg属性,然后才好用Json转换成目标类的一个实例对象。 |
|
package shi; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import net.sf.json.JSONObject; public class Test9 { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); try { File file = new File("F:\test.txt"); InputStreamReader read = new InputStreamReader(new FileInputStream( file)); BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null) { sb.append(lineTxt); } read.close(); } catch (Exception e) { e.printStackTrace(); } char str[] = sb.toString().toCharArray(); for(int i=0;i<str.length;i++){ System.out.println(str[i]); } String json = sb.toString().trim().substring(1); //String json = "{"success":true,"msg":"成功"}"; System.out.println(json); System.out.println(json.length()); JSONObject jsonobject = JSONObject.fromObject(json.trim()); System.out.println(jsonobject); } } |
|
实际上你读出来的字符串长度有问题,按道理讲应该是27,但是实际上长度为28,前面多了一个空字符
char str[] = sb.toString().toCharArray(); for(int i=0;i<str.length;i++){ System.out.println(str[i]); } 这部分输出时,第一个char为空 |
|
20分 |
多一个字符原因:
用文本编辑器(notepad++)打开test.txt文本文件 第一次选择的是红框的编码,这样读出来的字符串长度总是为28(莫名的多了一个字符),会报异常,因为第一个字符不是‘{’ 第二次选择的是蓝框的编码,这样读出来的字符串长度就是27,和我们认为的长度一样,也不会报异常 |
后台 :
String json = “{success:true,msg:””成功””}”; return json ; 如果是json串里需要用到变量,可以这样写: 比如变量为 temple String json = “{success:””+temple+””,msg:””成功””}”; return json ; 前台页面: Ajax执行成功的返回方法 |