2015-09-10 21 views
1

从URL读取json数据时出现错误。下面是我想要的代码。请纠正我错在哪里。线程“main”中的异常org.json.JSONException:一个JSONObject文本必须以'{'开始,位于1 [character 2 line 1]

public class ReadingJsonData { 
public static void main(String[] args) throws JSONException { 
JSONObject json = readJsonFromUrl("http://requestb.in/pp1mzapp"); 
    } 

public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { 
    InputStream is = new URL(url).openStream(); 
    try { 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
     String jsonText = readAll(rd); 
     JSONObject json = new JSONObject(jsonText.trim()); 
     return json; 
    } finally { 
     is.close(); 
    } 
    } 

    private static String readAll(Reader rd) throws IOException { 
     StringBuilder sb = new StringBuilder(); 
     int cp; 
     while ((cp = rd.read()) != -1) { 
     sb.append((char) cp); 
     } 
     return sb.toString(); 
    } 
    } 

而且从URL我的JSON对象貌似

{"FormID":"2095180","UniqueID":"213482652","Name":{"first":"Something","last":"New"},"Date of Birth":"Feb 03, 1926","Last 4 Digits of SSN":"1234","Week Beginning Date":"Jan 01, 2012","Week Ending Date":"Feb 03, 2014","Email":"[email protected]":""} 

回答

1

您的JSON是不正确的,看到最后一行打开此URL是“OK当

{ 
"FormID": "2095180", 
"UniqueID": "213482652", 
"Name": { 
    "first": "Something", 
    "last": "New" 
}, 
"Date of Birth": "Feb 03, 1926", 
"Last 4 Digits of SSN": "1234", 
"Week Beginning Date": "Jan 01, 2012", 
"Week Ending Date": "Feb 03, 2014", 
"Email": "[email protected]": "" 
} 
+0

这是一个TYPO,我修好了它 – tom

0

其实我得到”。这就是为什么它抱怨你的Json字符串不是以大括号开头的原因。

+0

是的,当我尝试以不同的方式它只是显示的确定。但是当你尝试用“http://requestb.in/pp1mzapp”打开一个页面时,它显示了json objcet – tom

+0

你应该将jsonText的内容打印到控制台,以确保你实际得到了你期望的Json字符串。 – benohead

0

我看到了问题,我传递的URL是获取HTML页面,整个页面而不是响应正文是问题。

相关问题