Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以正确/列出的顺序获取JSONObject值?_Java_Android_Json_Android Json - Fatal编程技术网

Java 如何以正确/列出的顺序获取JSONObject值?

Java 如何以正确/列出的顺序获取JSONObject值?,java,android,json,android-json,Java,Android,Json,Android Json,我正在使用迭代器_names=_formObject.keys()从以下json中获取值,但是我获取的值没有按照正确的顺序排列,例如,我按照“姓名、否、电话、性别”的顺序获取,我如何才能获得json中的正确值 { "form" :{ "No" : { "type" : "text" }, "phone" : { "type" : "

我正在使用迭代器_names=_formObject.keys()从以下json中获取值,但是我获取的值没有按照正确的顺序排列,例如,我按照“姓名、否、电话、性别”的顺序获取,我如何才能获得json中的正确值

{ "form" :{         
            "No" : {
                "type" : "text"
                  },
            "phone" : {
                "type" : "text"

            },
            "Name" : {
                "type" : "text"
            },
            "Sex" : {
                "type" : "radio"

             }
         }
       }
你可以这样做-

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) {

            }
        }
Iterator\u names=\u formObject.keys();
而(_names.hasNext()){
字符串键=_name.next();
试一试{
对象值=_formObject.get(键);
如果(值等于(“否”))
{/*不做你的事*/}
如果(值等于(“电话”))
{/*为手机做你的事*/}
if(value.equals(“Name”))
{/*为Name做你的事*/}
如果(值等于(“性别”))
{/*为性做你的事*/}
}捕获(JSONException e){
}
}
所以它们之前出现的顺序并不重要。您所要做的就是使用
\u formObject.get(key)
检查您希望按哪个顺序使用哪个键

请注意,
jsonObject
上的
keys()
函数并没有按原样给出有序列表。 您必须按照建议的方式进行操作。

对象中的键值对没有“正确的顺序”。但是,如果手动处理JSON读取器,您将读取序列化顺序-这种方法有效,因为在将流重构为对象图(在内部使用JSONObject的映射)之前对其进行处理

要访问原始JSON读取器,请参阅-但是,请注意,不能保证您获得的任何等效JSON都是按此顺序提供的!虽然它“会起作用”,但它基于一个(或多个)等效JSON输出创建了一个假脆性

请参见以下内容中的公认答案:

JSON对象的键顺序应该没有意义如果需要特定顺序,应使用数组,而不是对象


它基于您的响应。JSON不知道对象成员键的顺序(RFC 7159,第4节)@achiles我将JSON存储在我的文件存储中。那么只有我解析了,所以不可能基于响应进行解析,请看:
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();
        }
{
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"
}