遇到了这个错误:
3169-3190 / com.meisolsson.app E / JSON Parser:解析数据时出错org.json.JSONException:Value [{“type”:0,“can_see_custom_stories”:true,“display”:“”,“name “:” jenniaim “},{” 类型 “:0,” can_see_custom_stories “:真,” 显示 “:” “ ”名称“: ”lucasgardebrand“},{ ”类型“:0, ”can_see_custom_stories“:真”显示 “:””, “名称”: “herr_anderzzon”},{ “类型”:0, “can_see_custom_stories”:真, “显示”: “”, “名称”: “chrillebile”},{ “类型”:0 “can_see_custom_stories”:真, “显示”: “”, “名称”: “meisolsson”},{ “类型”:0, “can_see_custom_stories”:真, “显示”: “”, “名称”: “sakanapanda” },{“type”:0,“can_see_custom_stories”:true,“display”:“Team Snapchat”,“name”:“teamsn polyester”},{“type”:0,“can_see_custom_stories”:true,“display”: “”, “名称”: “fabianlindfors”},{ “类型”:0, “can_see_custom_stories”:真, “显示”: “卡佳”, “名称”: “katjaawesome”},{ “类型”:0,” can_see_custom_stories “:真,” 显示 “:””, “名称”: “swimkey”},{ “类型”:1, “can_see_custom_stories”:真, “显示”: “”, “名称”: “agnesholmberg”}]类型org.json.JSONArray无法转换为J. SONObject
所以这是代码:
public class JSONParser extends AsyncTask<Void, Void, Boolean> {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", LoginActivity.Suser));
nameValuePairs.add(new BasicNameValuePair("password", LoginActivity.Spass));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
@Override
protected Boolean doInBackground(Void... params) {
getJSONFromUrl("http://flapplabs.se/development/snapchat/friends.php");
return null;
}
}
答案 0 :(得分:26)
[..]
表示它应该是JSONArray
而{..}
表示它应该是JSONObject
。
因此:
try {
JSONArray jObj = new JSONArray(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
答案 1 :(得分:1)
即使我有一个JSON对象,它也存储在数组中 Hariharan用方括号[{items:items,...}]
指出我的解决方案只是解析出唯一一个位于数组位置[0]的对象,就像这个
一样JSONArray jsonArray = new JSONArray(stringIn);
JSONObject obj = jsonArray.getJSONObject(0);