【问题标题】:convert a json object response into array and get both key and value android将 json 对象响应转换为数组并获取键和值 android
【发布时间】:2018-02-22 21:15:09
【问题描述】:

我有一个动态的 json 响应,因此即使键名和索引号也可以更改

{
"Assigned": {
    "DC": 7,
    "EmpCode": "E0104",
    "FS": 8
}
}

我想将其转换为 JsonArray 并在对象“已分配”下动态获取所有键名和值。但我只是通过尝试获取值名。

try {
                        //converting dynamic jsonobject to json array and fetching value as well as key name
                        JSONObject jsonObject = response.getJSONObject("Assigned");
                        Iterator x = jsonObject.keys();
                        JSONArray jsonArray = new JSONArray();
                        while (x.hasNext()) {
                            String key = (String) x.next();
                            jsonArray.put(jsonObject.get(key));
                    }
                        Toast.makeText(RolesActivity.this,jsonArray.toString(), Toast.LENGTH_LONG).show();
                        Log.d("jsonarray",jsonArray.toString());

                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                        Toast.makeText(RolesActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
                    }

【问题讨论】:

  • 那是完全错误的 API 架构——使用 json 对象作为 json 数组。 正确的解决方案是在后端修复它
  • 该 api 也被网站和其他应用程序使用,因此不能要求对其进行编辑。我只需要使用它。请帮助
  • 只有动态得到对应的键名和值,我的工作才算完成
  • 尝试使用 hashmap。!
  • 你不能编辑代码并在这里放一个hashmap的示例代码吗?

标签: android json key-value


【解决方案1】:

您可以通过调用JSONObject.keys()(如Iterator)或JSONObject.names()(如JSONArray)获取JSONObject的密钥列表

之后你可以遍历键,并使用JSONObject.getString(key)获取每个键的值

【讨论】:

  • get(key) 实际上给了我价值。请编辑代码并发布它
  • @user8601021, get(key) is actually giving me the value 没错,我只是告诉了如何在我的答案中获取密钥
  • 我想要键名
  • @user8601021,这对我来说是完全清楚的,我发布的方法返回 通过键名的迭代器键名的 JSONArray
【解决方案2】:

首先创建一个pojo类

  private HashMap<String, String> parseResponse(){

    String json = ""; //  your json string

    Gson gson = new Gson();

    Response response =  gson.fromJson(json, Response.class)

    return response.getAssigned();

}


public class Response {

    @SerializedName("Assigned")
    private HashMap<String, String> assigned;

    public HashMap<String, String> getAssigned() {
        return assigned;
    }
}

比使用 Gson 库解析。您可以从分配的 Hashmap 中读取键和值。

【讨论】:

  • 请贴出完整代码。我之前没用过gson
  • 检查我更新的答案。这是Gson github链接github.com/google/gson
  • 我会试试 2moro。必须马上去
猜你喜欢
  • 2013-05-03
  • 2021-11-01
  • 2016-03-18
  • 2021-03-10
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
相关资源
最近更新 更多