java - 当 JSON 没有变量名时使用 gson 反序列化

标签 java json gson

我有一个 Json 波纹管:

{
    "0001":[111, "BLABLA", "LALA", "KKK",80,20],
    "002":[222, "BLABLA", "LALA", "KKK",80,40],
    "003":[333, "BLABLA", "LALA", "KKK",100,20],
    "000":[444, "BLABLA", "LALA", "KKK",800,60],
    "555":[555, "BLABLA", "LALA", "KKK",80,20,
    "100":[48, "BLABLA", "LALA", "KKK",80,20]
}

我在 Gson 反序列化时遇到问题。我知道使用变量名称定义如下的 Json:

{
   "item":"001":["id":1,"description":"bla bla"],
   "item":"002":["id":2,"description":"bla bla"]
}

然后我使用与 json 相同的变量名定义类并执行解析

public class DataClass
{
  String item;
  int id;
  String description;

  getters and setters;

}

gson.fromJson (json, DataClass.class);

但我不知道如何执行此操作,以防我需要使用不带变量名的 json(在帖子开头)。有人可以帮忙吗?

最佳答案

本类(class)回答您的问题:

package stackoverflow.questions.q18116805;

import java.lang.reflect.Type;
import java.util.*;

import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;

public class Q18116805 {


    public static void main(String[] args) {
        String json =                                                 
            "{  \"0001\":[111, \"BLABLA\", \"LALA\", \"KKK\",80,20],   "+
            "    \"002\":[222, \"BLABLA\", \"LALA\", \"KKK\",80,40],   "+
            "    \"003\":[333, \"BLABLA\", \"LALA\", \"KKK\",100,20],  "+
            "    \"000\":[444, \"BLABLA\", \"LALA\", \"KKK\",800,60],  "+
            "    \"555\":[555, \"BLABLA\", \"LALA\", \"KKK\",80,20],   "+
            "    \"100\":[48, \"BLABLA\", \"LALA\", \"KKK\",80,20]}";

        Type aType = new TypeToken<Map<String,ArrayList<Object>>>() {}.getType();
        Map<String,ArrayList<Object>> map = new Gson().fromJson(json, aType);

        System.out.println(map);
    }
}

这是结果:

{0001=[111.0, BLABLA, LALA, KKK, 80.0, 20.0], 002=[222.0, BLABLA, LALA, KKK, 80.0, 40.0], 003=[333.0, BLABLA, LALA, KKK, 100.0, 20.0], 000=[444.0, BLABLA, LALA, KKK, 800.0, 60.0], 555=[555.0, BLABLA, LALA, KKK, 80.0, 20.0], 100=[48.0, BLABLA, LALA, KKK, 80.0, 20.0]}

关于java - 当 JSON 没有变量名时使用 gson 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18116805/

相关文章:

java - 如何在 Java 中使用 Restful Web 服务(Restful API)

android - Kotlin 使用 Gson 将 json 字符串转换为对象列表

java - Gson 处理同步 HashMap 作为类成员时的情况

java - JConsole 通过 ssh 本地端口转发

php - 在 PHP 和 Android 中将时间戳转换为可读时间

java - JSON 解析器 : IOException: Unable to resolve host "my host address": No address associated with hostname

java - 带有 Retrofit 2 的多个转换器

java - 删除时出现 "org.hibernate.TransactionException: nested transactions not supported"错误

java - NoViableAltException : Unexpected token in @NamedQuery

java - 如何去掉 Calc 程序字符串中的空格