我在解析JSON方面遇到了问题,而且我遇到了特定情况。 我试图在JSON arrat“详细信息”下获取所有值,但它给了我一个错误,说JSONObject无法转换为JSONArray
{
"response": "true",
"errors": "<span>Success</span>",
"details": {
"sid": "15",
"pid": "1",
"user_email": "chardalvarez@gmail.com",
以下是我已经完成的事情:
String json = mParser.makeHttpRequest(API_REGISTER, "POST", params);
Log.d("Registration Return: ", json);
try {
JSONObject jObj = new JSONObject(json);
if (jObj != null) {
mDetails = jObj.getJSONArray("details");
if (mDetails != null) {
for (int i = 0; i < mDetails.length(); i++) {
JSONObject c = mDetails.getJSONObject(i);
mPid = c.getString("sid");
mSid = c.getString("pid");
mUserEmail = c.getString("user_email");
但我仍然得到同样的错误。我的代码错了吗?我还使用JSONLINT检查了我的JSON,认为它是一个无效的JSON,但它表示有效的JSON。非常感谢帮助。
答案 0 :(得分:1)
您的json是有效的,但details
是JSON object
,而不是JSON array
您在详细信息中使用了curly brace
,这意味着它是object
{
"response": "true",
"errors": "<span>Success</span>",
"details": {
"sid": "15",
"pid": "1",
"user_email": "chardalvarez@gmail.com",
表示数组,用square brackets
{
"response": "true",
"errors": "<span>Success</span>",
"details": [
"sid": "15",
"pid": "1",
"user_email": "chardalvarez@gmail.com",
编辑:看看你的代码,如果细节是一个对象而不是一个数组,它似乎更有益
(如果你有一个数组,根据你的语法,这些值只会存储为字符串值而不是json键值对)
从
改变mDetails = jObj.getJSONArray("details");
到
mDetails = jObj.getJSONObject("details");
答案 1 :(得分:0)
String json = mParser.makeHttpRequest(API_REGISTER, "POST", params);
Log.d("Registration Return: ", json);
try {
JSONObject jObj = new JSONObject(json);
if (jObj != null) {
mDetails = jObj.getJSONObject"details");
if (mDetails != null) {
String sid= mDetails.getString("sid");
String pid = mDetails.getString("pid");
String mUserEmail = mDetails.getString("user_email");