从jSONobject获取值

时间:2014-01-01 12:03:39

标签: java android json

我正在使用web服务。现在我想从json对象获取值,所以我创建了一个解析器类并传递了json对象。在System.out.println(“main object”+ mainObj)中我得到了json object.But in if(mainObj!= null)我得到了false。所以剩下的代码没有用。返回类型总是为null。

以下是我的代码,

Parser Class

public class JSONParser {

    private Context mContext;
    public JSONParser(Context context)
    {
        mContext=context;
    }
    public JSON_Parser_Registration[] ObjectReturner(String result)
    {
        JSON_Parser_Registration[] mJSONObj=null;
        try
        {
            JSONObject mainObj = new JSONObject(result);
            System.out.println("main object"+mainObj);
            if(mainObj!=null)
            {
                JSONArray list = mainObj.getJSONArray("result");
                System.out.println("list values"+list);
                if(list != null)
                {
                    mJSONObj=new JSON_Parser_Registration[list.length()];                       
                    for(int i = 0; i < list.length();i++)
                    {
                        JSONObject elem = list.getJSONObject(i);
                        System.out.println("element values"+elem);
                        if(elem != null)
                        {
                            String id=elem.getString("id");
                            String msg=elem.getString("msg");
                            mJSONObj[i]=new JSON_Parser_Registration();
                            mJSONObj[i].SetValues(id, msg);
                            System.out.println("id is "+id +" \nMessage is is "+msg);

                        }
                    }
                }
            }

        }
        catch(Exception e)
        {

        }
        return mJSONObj;
    }

}

JSON_Parser_Registration class

public class JSON_Parser_Registration {

    public String mId;
    public String mMessage;


    public void SetValues(String id,String msg)
    {
        mId=id;
        mMessage=msg;

    }
}

JSON对象采用服务器

的格式
{"result":{"id":248,"msg":"AppUser added successfully"}}

3 个答案:

答案 0 :(得分:2)

resultJSONObject而不是JSONArray

JSONArray list = mainObj.getJSONArray("result");

错了。

{ // json object node
    "result": { // jsonobject result
        "id": 248, 
        "msg": "AppUser added successfully"
    }
}

所以它应该是

JSONObject job = mainObj.getJSONObject("result");
String id=job.getInt("id");
String msg=job.getString("msg")

答案 1 :(得分:0)

使用杰克逊图书馆。以下是您要查找的示例

How to use Jackson to deserialise an array of objects

为什么重新发明轮子:)

答案 2 :(得分:0)

  

使用此代码

 JSONObject elem =new JSONObject(list.getJSONObject(i));
    if(elem != null)
    {
              String id=elem.getString("id");
              String msg=elem.getString("msg");
              mJSONObj[i]=new JSON_Parser_Registration();
              mJSONObj[i].SetValues(id, msg);
              System.out.println("id is "+id +" \nMessage is is "+msg);
    }