当前位置: 首页 > 知识库问答 >
问题:

GSON:无法正确解析JSON对象

欧阳正卿
2023-03-14
{
 "key1":"someValue",
 "key2":{   
            "anotherKey1":"212586425",
            "anotherKey2":"Martin"
         }
}
Data data = new Gson().fromJson(json, Data.class);
public class Data {

        public String key1;
        public Map key2; //This will break everything.
}

GSON不是在一开始就解析我传递的整个JSON字符串吗?因此,最终,我希望新的数据源是map对象。那可行吗?

共有1个答案

支铭晨
2023-03-14

让Gson来做这项工作。我将数据定义为

package stackoverflow.questions.q19228349;

public class Data {

    @Override
    public String toString() {
        return "Data [key1=" + key1 + ", key2=" + key2 + "]";
    }
    public String key1;
    public Object key2;

}

然后我可以解析key2:

package stackoverflow.questions.q19228349;

import com.google.gson.Gson;

public class Q19228349 {


    public static void main(String[] args){
    String json =
            "{\"key1\":\"someValue\","+
            "\"key2\":{   "+
            "           \"anotherKey1\":\"212586425\","+
            "           \"anotherKey2\":\"Martin\""+
            "        }"+
            " }";

    String json2 =
            "{\"key1\":\"someValue\","+
            "\"key2\":\"aString\""+
            " }";

        Gson g = new Gson();
        Data d = g.fromJson(json, Data.class); 
        System.out.println("First: " +d);

        Data d2 = g.fromJson(json2, Data.class); 
        System.out.println("Second: "+d2);
    }


}

这就是结果:

 类似资料:
  • 我希望有人能帮我解决这个问题。 我想用WebClient创建一个Rest客户端,从API中检索响应。所以我创建了我的Spring项目,添加了webflux、lombok和h2。我还创建了一个DTO类“CashAccount”和以下方法: 当我使用“.bodyToMono(String.class)”时,所有的功能都很好,我收到了结果: 相反,当我使用“.bodyToMono(cashcount.c

  • 我不知道为什么我的json解析不起作用。这是我正在使用的Api。还有完整json输出的链接http://api.openweathermap.org/data/2.5/forecast/daily?zip=85008 我试图得到每天的最低和最高温度。这是我的代码。引发的异常应该是BEGIN_OBJECT,但在第1行第190列编号。任何帮助不胜感激,谢谢!

  • 问题内容: 我有这个json数组: 我有这个类来保存数据: 我正在尝试将json转换为MapData对象的列表: 但是我得到这个错误: 我究竟做错了什么? 问题答案: 我怀疑方法调用返回错误的类型。它应该返回而不是。 就像是: 在这个要点中,我有一个很好的例子说明了您的问题

  • 如何使用GSON解析这个json? 我的代码: 我的stacktrace com.google.gson.JsonSyn出租车异常:java.lang.IllegalStateExctive:预期BEGIN_OBJECT但BEGIN_ARRAY在第1行第2列路径$com.google.gson.internal.bind.ReflecteTypeAdapterFactory$Adapter.rea

  • 问题内容: 我有一个像这样的JSON对象: 并尝试与Gson解析: 但是“ responceBean”始终为“ null” 这是所有其他类: 这是我的最新尝试。我不知何故找不到正确的方法。任何帮助将不胜感激。 问题答案: 您的 JSON模型与您的对象模型不匹配 。 您需要一个中间层来填补空白: TypeAdapter 。 而且,没有用户的命名信息。 最后是名称不匹配:JSON中的“ worklog