从json中获取对象的值

时间:2014-01-03 09:42:01

标签: android json

我是android的新手。我需要从web服务获取值。这里我使用了json解析。输出Json格式如下。在这里,我需要获取对象的值。我如何获取对象的值。请帮助我。

{
   "result":[
      [
         {
            "transaction date":"2013-12-19T10:44:45+0530",
            "earned points":"0",
            "amount":"15202",
            "transaction id":"8",
            "transaction type":1
         },
         {
            "transaction date":"2013-12-16T07:14:13+0530",
            "earned points":"11",
            "amount":"12121",
            "transaction id":"4",
            "transaction type":0
         }
      ]
   ]
}

4 个答案:

答案 0 :(得分:0)

你需要解析json

{  // JSONObject node 
   "result":[ // JSONArray result
      [       // JSONArray node 
         {   // JSONObject node

解析

 try
    {
    JSONObject jb = new JSONObject("My JSON");
     JSONArray jr = jb.getJSONArray("result"); 
     JSONArray jr1 = jr.getJSONArray(0);
     for(int i=0;i<jr1.length();i++)
     {
         JSONObject job = jr1.getJSONObject(i);
         Log.i("............",""+job.getString("transaction date"));
             String earnedpoints = job.getString("earned points"); 
             String amount = job.getString("amount");   
             String id = job.getString("transaction id"); 
             int type =  job.getString("transaction type");
     }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

日志

01-03 04:49:09.940: I/............(1397): 2013-12-19T10:44:45+0530
01-03 04:49:09.940: I/............(1397): 2013-12-16T07:14:13+0530

答案 1 :(得分:0)

试试这个存储变量

的值
String transaction_date="";    
int epoints=0,amount=0,tid=0,ttype=0;
        try{
        JSONObject jObject= new JSONObject(output);
        JSONArray menuObject = new JSONArray(jObject.getString("result"));          
                       for (int i = 0; i<menuObject.length(); i++)
                                {
                            transition date=    menuObject.getJSONObject(i).getString("transaction date");
                            epoints=menuObject.getJSONObject(i).getInt("earned points");
                            amount=menuObject.getJSONObject(i).getInt("amount");
                            tid=menuObject.getJSONObject(i).getInt("transaction id");
                            ttype=menuObject.getJSONObject(i).getInt("transaction type");
                                }
            }catch(Exception e){
            }

答案 2 :(得分:0)

您可以使用JSONObject和JSONArray。

JSONObject jsonObj= new JSONObject([your json string]);
JSONArray jsonArr = jsonObj.getJSONArray("result");

for (int i = 0; i < jsonArr.length(); i++) {
JSONObject current = jsonArr.getJSONObject(i);
String temp = current.getString([your key]);
}

答案 3 :(得分:0)

我把我的答案放在了,因为已经有4个在线。但是,他们都建议使用整个JSON的手动解析,即:

  • 非常麻烦
  • 很难维护
  • 难以理解

我,我自己,如果我必须解析多个字段,我总是使用JSON解析库。我建议使用GSON。将其添加到类路径。如果你定义要作为类解析的json数组的元素(这可能你已经完成了),那就更好了:

public class Transaction {
  @SerializedName("transaction date")
  private Date transactionDate;
  @SerializedName("earned points")
  private String earnedPoints;
  private int amount;
  @SerializedName("transaction id")
  private int transactionId;
  @SerializedName("transaction type")
  private int transactionType;
  //optional getters / setters
}

请注意,由多个单词组成的字段名称无效,这就是我使用@SerializedName注释来确保正确解析的原因。

然后我们假设您在String json中有json:

GsonBuilder gsonBuilder = new GsonBuilder();
// I think this is the date format you are using
gsonBuilder.setDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
Gson gson = gsonBuilder.create();
Transaction[] transactions = gson.fromJson(json, Transaction[].class);

就是这样。您可以立即解析日期并准备好使用对象。