我使用Iterator<String> _names = _formObject.keys();
从以下json获取值,但我得到的值没有按正确顺序排列,例如我按“姓名,号码,电话,性别”的顺序排列,我怎么能在json中得到正确的值?
{ "form" :{
"No" : {
"type" : "text"
},
"phone" : {
"type" : "text"
},
"Name" : {
"type" : "text"
},
"Sex" : {
"type" : "radio"
}
}
}
答案 0 :(得分:4)
没有&#34;正确的顺序&#34;使用JSON对象中的键值对。但是,如果您手动处理JSON Reader,您将读取序列化顺序 - 这种方法有效,因为在 重构之前,处理流到对象图中(使用内部的JSONObject映射。
要访问原始 JSON阅读器,请参阅JsonReader - 但请注意无保证 等效 您获得的JSON按此顺序提供!虽然它会工作&#34;但它会根据一个(很多)等效的JSON输出产生虚假的脆弱性。
请参阅When JsonObject's keys are iterated they aren't in the same order as in the response from the server中接受的答案:
JSON对象的键的顺序不应该是有意义的。 如果您需要特定订单,则应使用数组,而不是对象。
答案 1 :(得分:0)
if(result != null)
{
try
{
JSONObject jobj = result.getJSONObject("result");
String status = jobj.getString("status");
if(status.equals("true"))
{
JSONArray array = jobj.getJSONArray("data");
for(int x = 0; x < array.length(); x++)
{
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", array.getJSONObject(x).getString("header"));
map.put("date", array.getJSONObject(x).getString("date"));
map.put("description", array.getJSONObject(x).getString("description"));
list.add(map);
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
{
Toast.makeText(Calendar.this, "Network Problem", Toast.LENGTH_LONG).show();
}
它正在从给定的JSON中读取
{
result: {
data: [
{
header: "En övre rubrik här",
date: "10 Apr,2014",
description: "Test av en fin text. Om jag länkar. www.swerix.se Mer annat kanske. 0706300080 "
},
{
header: "Info 3",
date: "17 Apr,2014",
description: "Detta är en ny information. Skrivet över även hej hopp"
},
{
header: "testing news1",
date: "13 Mar,2014",
description: "this is testing news description12"
}
],
status: "true",
description: "Data found"
}
答案 2 :(得分:-1)
你可以这样做 -
Iterator<String> _names = _formObject.keys();
while (_names.hasNext()) {
String key = _names.next();
try {
Object value = _formObject.get(key);
if(value.equals("No"))
{ /*Do your stuff for No*/ }
if(value.equals("phone"))
{ /*Do your stuff for phone*/ }
if(value.equals("Name"))
{ /*Do your stuff for Name*/ }
if(value.equals("Sex"))
{ /*Do your stuff for Sex*/ }
} catch (JSONException e) {
}
}
所以它们之前出现的顺序无关紧要。您所要做的就是使用_formObject.get(key)
检查您想要的按键顺序。
请注意keys()
上的jsonObject
函数未按原样提供有序列表。
你必须按照这种方式建议。