无法在Android中单独获取JSON值

时间:2017-02-15 06:31:36

标签: android json

我在查找如何解析JSONArray

方面遇到了麻烦

这是我的JSON:

{
   "result": [
 [
         "id",
         "name",
         "origin",
         "destination"
      ],
      [
         1,
         "A S Peta",
         0,
         0
      ],
      [
         2,
         "Aachara",
         0,
         0
      ],
.
.
.
[
         2238,
         "sydney",
         0,
         0
      ]
]
}

我需要在Android应用中访问它。我尝试过,但是我能够接收到值,但是它们显示在一行中,我无法分割字段。

if (jsonStr != null) {
            try {
                JSONObject jsonObj = new JSONObject(jsonStr);

                // Getting JSON Array node
                JSONArray contacts = jsonObj.getJSONArray("result");
                for (int i = 1; i < contacts.length(); i++) {
              String name = contacts.getString(i).replaceAll("\\[|\\]", "");
                    HashMap<String, String> contact = new HashMap<>();
                    contact.put("name", name);
                  contactList.add(contact);
                }

            } 

这是我的输出,我需要单独获取值,如:

1  
A S Peta  
0  
0  

但不是单排:

5 个答案:

答案 0 :(得分:3)

Json String可以在JSONObject中解析,如:

try {
        List<HashMap<String,String>> cityDetails= new ArrayList<HashMap<String,String>>();
        JSONObject jsonObject = new JSONObject("your json string");
        JSONArray jsonArray = jsonObject.getJSONArray("result");
        JSONArray cityKeyArray =jsonArray.getJSONArray(0);

        for(int index=1; index<jsonArray.length();index++){
            HashMap<String, String> cityData = new HashMap<String, String>();
            for(int dataIndex=0; dataIndex<cityKeyArray.length();dataIndex++) {
               cityData.put(cityKeyArray.getString(dataIndex), jsonArray.getJSONArray(index).getString(dataIndex));
            }
            cityDetails.add(cityData);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
可以在适配器中使用

cityDetails 根据JSON字符串的第一个数组中的键显示值,即 cityKeyArray 。 因此,集合将根据用户要求显示数据。

希望这有助于解决您的疑问。 谢谢,快乐的编码!!!

答案 1 :(得分:0)

String name = contacts.getString(i).replaceAll("\\[|\\]", "");

不要这样做;看来你的数组没有字符串。

您有嵌套列表,所以您可以通过另一个getJSONArray(index)方法访问这些JSON数组

或者您可以修复JSON(您的服务器?)的源代码以返回更好的可解析JSON

答案 2 :(得分:0)

try {
            JSONObject jsonObj = new JSONObject(jsonStr);

            // Getting JSON Array node
            JSONArray contacts = jsonObj.getJSONArray("result");

            for (int i = 1; i < contacts.length(); i++) {

                HashMap<String, String> contact = new HashMap<>();
                contact.put("name", contacts.getString("name"));
              contactList.add(contact);
            }

        }

答案 3 :(得分:0)

使用此

更新您的代码
if (jsonStr != null) {
        try {
            JSONObject jsonObj = new JSONObject(jsonStr);

            // Getting JSON Array node
            JSONArray contacts = jsonObj.getJSONArray("result");
            for (int i = 1; i < contacts.length(); i++) {
         JSONArray contactArray = contacts.getJSONArray(i);
         int id = contactArray.getInt(0);
         String name = contactArray.getString(1);
         String origin= contactArray.getString(2);
         String destination= contactArray.getString(3);
                HashMap<String, String> contact = new HashMap<>();
                contact.put("id", id);
                contact.put("name", name);
                contact.put("origin", origin);
                contact.put("destination", destination);
              contactList.add(contact);
            }
        } 

答案 4 :(得分:0)

这样做

 if (jsonStr != null) {
        try {
            JSONObject jsonObj = new JSONObject(jsonStr);

            // Getting JSON Array node
            JSONArray contacts = jsonObj.getJSONArray("result");
            for (int i = 1; i < contacts.length(); i++) {
                JsonArray array=contacts.get(i);
          String name = array.getString("name");
                HashMap<String, String> contact = new HashMap<>();
                contact.put("name", name);
              contactList.add(contact);
            }

        }