Android:如何从此 json 获取 JSON 对象键:
Android: How to get JSON object keys from this json:
这是 JSON 数组:
{
"server_response": [{
"Total": "135",
"Paid": "105",
"Rest": "30"
}]
}
那么,我怎样才能得到对象名称呢?我想将它们放在单独的 TextView 中。
谢谢
JSONObject jsonObject = new JSONObject("Your JSON");
int Total = jsonObject.getJSONArray("server_response").getJSONObject(0).getInt("Total");
int Paid = jsonObject.getJSONArray("server_response").getJSONObject(0).getInt("Paid");
int Rest = jsonObject.getJSONArray("server_response").getJSONObject(0).getInt("Rest");
把这个放在一边。我的意思是在 onCreate()
之外。
private <T> Iterable<T> iterate(final Iterator<T> i){
return new Iterable<T>() {
@Override
public Iterator<T> iterator() {
return i;
}
};
}
获取对象名称:
try
{
JSONObject jsonObject = new JSONObject("{" +"\"server_response\": [{" +"\"Total\": \"135\"," +"\"Paid\": \"105\"," +"\"Rest\": \"30\"" +"}]"+"}";);
JSONArray jsonArray = jsonObject.getJSONArray("server_response");
JSONObject object = jsonArray.getJSONObject(0);
for (String key : iterate(object.keys()))
{
// here key will be containing your OBJECT NAME YOU CAN SET IT IN TEXTVIEW.
Toast.makeText(HomeActivity.this, ""+key, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
希望这对您有所帮助:)
我的建议:
转到此网站:
Json to pojo
获取您的 pojo classes,然后在 Android 中使用它们。
您需要做的就是使用 Gson.fromGson(此处为参数)。
您的参数之一是您使用在线架构创建的 class。
您可以使用 jackson
ObjectMapper
来执行此操作。
public class ServerResponse {
@JsonProperty("Total")
private String total;
@JsonProperty("Paid")
private String paid;
@JsonProperty("Rest")
private String rest;
//getters and setters
//toString()
}
//Now convert json into ServerResponse object
ObjectMapper mapper = new ObjectMapper();
TypeReference<ServerResponse> serverResponse = new TypeReference<ServerResponse>() { };
Object object = mapper.readValue(jsonString, serverResponse);
if (object instanceof ServerResponse) {
return (ServerResponse) object;
}
这是 JSON 数组:
{
"server_response": [{
"Total": "135",
"Paid": "105",
"Rest": "30"
}]
}
那么,我怎样才能得到对象名称呢?我想将它们放在单独的 TextView 中。 谢谢
JSONObject jsonObject = new JSONObject("Your JSON");
int Total = jsonObject.getJSONArray("server_response").getJSONObject(0).getInt("Total");
int Paid = jsonObject.getJSONArray("server_response").getJSONObject(0).getInt("Paid");
int Rest = jsonObject.getJSONArray("server_response").getJSONObject(0).getInt("Rest");
把这个放在一边。我的意思是在 onCreate()
之外。
private <T> Iterable<T> iterate(final Iterator<T> i){
return new Iterable<T>() {
@Override
public Iterator<T> iterator() {
return i;
}
};
}
获取对象名称:
try
{
JSONObject jsonObject = new JSONObject("{" +"\"server_response\": [{" +"\"Total\": \"135\"," +"\"Paid\": \"105\"," +"\"Rest\": \"30\"" +"}]"+"}";);
JSONArray jsonArray = jsonObject.getJSONArray("server_response");
JSONObject object = jsonArray.getJSONObject(0);
for (String key : iterate(object.keys()))
{
// here key will be containing your OBJECT NAME YOU CAN SET IT IN TEXTVIEW.
Toast.makeText(HomeActivity.this, ""+key, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
希望这对您有所帮助:)
我的建议:
转到此网站:
Json to pojo
获取您的 pojo classes,然后在 Android 中使用它们。
您需要做的就是使用 Gson.fromGson(此处为参数)。
您的参数之一是您使用在线架构创建的 class。
您可以使用 jackson
ObjectMapper
来执行此操作。
public class ServerResponse {
@JsonProperty("Total")
private String total;
@JsonProperty("Paid")
private String paid;
@JsonProperty("Rest")
private String rest;
//getters and setters
//toString()
}
//Now convert json into ServerResponse object
ObjectMapper mapper = new ObjectMapper();
TypeReference<ServerResponse> serverResponse = new TypeReference<ServerResponse>() { };
Object object = mapper.readValue(jsonString, serverResponse);
if (object instanceof ServerResponse) {
return (ServerResponse) object;
}