java - 通过 Gson 解析 json 字符串格式 = {TEST :[1, 2,3,4]}

标签 java json

如何将以下字符串解析为 json。

String jsonString="
{\"TEST64\":[1,0,16,0],\"TEST59\":[2,0,17,0],\"TEST65\":[2,0,16,0],\"TEST57\":[1,0,16,0],\"TEST66\":[2,0,17,0],\"TEST67\":[1,0,18,0],
 \"TEST58\":[2,0,13,0],\"TEST55\":[1,0,17,0],\"TEST68\":[1,0,16,0],\"TEST69\":[2,0,18,0],\"TEST56\":[1,0,16,0],\"TEST53\":[2,0,13,0],
 \"TEST54\":[1,0,17,0],\"TEST70\":[2,0,17,0],\"TEST52\":[2,0,16,0],\"TEST51\":[1,0,16,0],\"TEST61\":[2,0,16,0],\"TEST60\":[2,0,14,0],
 \"TEST63\":[2,0,18,0],\"TEST62\":[1,0,18,0]}";

我正在使用 gson,并尝试转换为 MAP 但出现异常:

new Gson().fromJson(jsonString, HashMap.class);

并获得异常:

Exception in thread "main" com.google.gson.JsonParseException: Expecting array but found object:       java.lang.Object@4c5e176f
at   com.google.gson.JsonArrayDeserializationVisitor.startVisitingObject(JsonArrayDeserializationVisitor.java:89)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:119)
at com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:67)
at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:52)
at com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:68)
at com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:33)
at com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51)
at com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:92)
at com.google.gson.JsonDeserializationVisitor.visitUsingCustomHandler(JsonDeserializationVisitor.java:80)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:101)
at com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:76)
at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:54)
at com.google.gson.Gson.fromJson(Gson.java:551)
at com.google.gson.Gson.fromJson(Gson.java:521)

感谢任何帮助。

最佳答案

看来我没有问题。我正在使用 Gson-2.2.4。示例:

public static void main(String[] args) {
        try {           
            String jsonString = "{\"TEST64\":[1,0,16,0],\"TEST59\":[2,0,17,0],\"TEST65\":[2,0,16,0],\"TEST57\":[1,0,16,0],\"TEST66\":[2,0,17,0],\"TEST67\":[1,0,18,0],\"TEST58\":[2,0,13,0],\"TEST55\":[1,0,17,0],\"TEST68\":[1,0,16,0],\"TEST69\":[2,0,18,0],\"TEST56\":[1,0,16,0],\"TEST53\":[2,0,13,0],\"TEST54\":[1,0,17,0],\"TEST70\":[2,0,17,0],\"TEST52\":[2,0,16,0],\"TEST51\":[1,0,16,0],\"TEST61\":[2,0,16,0],\"TEST60\":[2,0,14,0],\"TEST63\":[2,0,18,0],\"TEST62\":[1,0,18,0]}";
            HashMap m = new Gson().fromJson(jsonString, HashMap.class);
            System.out.println(m);              
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

这段代码成功将json字符串转换成HashMap。 hashMap的Key是String,value是ArrayList。

输出:

{TEST64=[1.0, 0.0, 16.0, 0.0], TEST59=[2.0, 0.0, 17.0, 0.0], TEST65=[2.0, 0.0, 16.0, 0.0], TEST57=[1.0, 0.0, 16.0, 0.0], TEST66=[2.0, 0.0, 17.0, 0.0], TEST67=[1.0, 0.0, 18.0, 0.0], TEST58=[2.0, 0.0, 13.0, 0.0], TEST55=[1.0, 0.0, 17.0, 0.0], TEST68=[1.0, 0.0, 16.0, 0.0], TEST69=[2.0, 0.0, 18.0, 0.0], TEST56=[1.0, 0.0, 16.0, 0.0], TEST53=[2.0, 0.0, 13.0, 0.0], TEST54=[1.0, 0.0, 17.0, 0.0], TEST70=[2.0, 0.0, 17.0, 0.0], TEST52=[2.0, 0.0, 16.0, 0.0], TEST51=[1.0, 0.0, 16.0, 0.0], TEST61=[2.0, 0.0, 16.0, 0.0], TEST60=[2.0, 0.0, 14.0, 0.0], TEST63=[2.0, 0.0, 18.0, 0.0], TEST62=[1.0, 0.0, 18.0, 0.0]}

关于java - 通过 Gson 解析 json 字符串格式 = {TEST :[1, 2,3,4]},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22877111/

相关文章:

Java 插入二维数组

java - 运行actionPerformed时出现空指针异常,Java

ios - 无法在 Firebase API 回调 block 中的函数内赋值

java - 如何使用 selenium 处理 firefox 中的 "Your connection is not secure"错误

java - 如何使用 switch case 表示两个变量?

java - struts2 if 测试 arraylist 中的属性值

java - Jackson - 动态抑制属性的序列化(写入)

c# - .Net 4.5 中有什么新内容可以更好地处理 JSON 吗?

javascript - 如果对象内容是用户生成的,如何正确转义对象的 JSON 字符串?

php - 在 PHP 中,如何以 JSON 格式从 MySQL 返回多个列值?