java - GSON。如何将json对象转换为json数组?

标签 java android json parsing gson

现在我从 API 获取这个 JSON:

{"supplyPrice": {
        "CAD": 78,
        "CHF": 54600.78,
        "USD": 20735.52
      }}

但是价格是动态的,这就是为什么我需要这种形式的 JSON

{
  "supplyPrice": [
    {
      "name": "CAD",
      "value": "78"
    },
    {
      "name": "TRY",
      "value": "34961.94"
    },
    {
      "name": "CHF",
      "value": "54600.78"
    },
    {
      "name": "USD",
      "value": "20735.52"
    }
  ]
}

如何使用 GSON 做到这一点?

最佳答案

希望这部分代码对您有所帮助:

    String json = "{\"supplyPrice\": {\n" +
            "        \"CAD\": 78,\n" +
            "        \"CHF\": 54600.78,\n" +
            "        \"USD\": 20735.52\n" +
            "      }}";

    Gson gson = new Gson();
    JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
    JsonObject supplyPrice = jsonObject.get("supplyPrice").getAsJsonObject();
    Type type = new TypeToken<HashMap<String, Double>>() {
    }.getType();
    HashMap<String, Double> parsedJson = gson.fromJson(supplyPrice, type);
    JsonArray jsonArray = new JsonArray();
    for(String key : parsedJson.keySet()) {
        JsonObject jo = new JsonObject();
        jo.addProperty("name", key);
        jo.addProperty("value", parsedJson.get(key));
        jsonArray.add(jo);
    }
    JsonObject result = new JsonObject();
    result.add("supplyPrice", jsonArray.getAsJsonArray());

关于java - GSON。如何将json对象转换为json数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35083609/

相关文章:

java - 同时使用多个AnimationDrawables

android - 在 zxing fragment 库中打开/关闭手电筒

java - 如何从 javax.servlet.filter doFilter 方法返回 JSON 响应消息和 HTTP 错误代码?

Play 2.4 中特征的 Json 格式化程序

java - 如何进行 AnnotationProcessor 测试带注释类型的*子类型*?

java - java中虚拟键盘代码中表达式错误的非法开始

java - JBoss 7 上的 Liferay

android - 如何结合 Observable<OnTextChangeEvent> 和 Observable<OnCheckedChangeEvent>?

javascript - Mvc Kendo 网格 - 不显示从 Controller 返回的任何数据

java - 使 ArrayList<JTextArea> 为 JScrollPane