我是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
}
]
]
}
答案 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);
就是这样。您可以立即解析日期并准备好使用对象。