【问题标题】:java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1java.lang.IllegalStateException:应为 BEGIN_OBJECT,但在第 1 行为 STRING
【发布时间】:2022-01-08 21:33:09
【问题描述】:

我正在尝试在 java 中序列化下面的 JSON 数据

  [{
    "clear": "0",
    "default": ["123","234"],
    "mandatory": "1",
    "visible": "1"
}]

我的序列化程序类如下所示,

public class HandleConfig{
@SerializedName("visible")
private  int visible;
@SerializedName("clear")
private  int clear;
@SerializedName("mandatory")
private int mandatory;
@SerializedName("default")
private JSONArray def;

// getter and setter methods here...

}

//调用序列化器

Gson gson1 = new Gson();
Type collectionType1 = new TypeToken<List<HandleConfig>>(){}.getType();
List<HandleConfig> handleConfigurations = gson1.fromJson(object.toString(), collectionType1);

// 错误

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 267 path $[0].default

我已经参考了各种堆栈溢出答案.. 并且知道这背后的原因是序列化程序期望“默认”是波纹管格式

 "default":[{ "id":123},{"id":124}]

但现在我的问题是如何将 "defalut":["123","1234"] 序列化为 JSON 数组而不产生任何错误,

提前谢谢.. :)

【问题讨论】:

    标签: java android json jsonserializer json-serializable


    【解决方案1】:

    请使用它进行解析:

    List&lt;String&gt; def 而不是JSONArray def

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 2018-07-28
      • 1970-01-01
      • 2015-10-04
      • 2023-01-01
      • 2016-06-01
      • 2019-04-28
      • 2019-11-27
      • 2020-04-10
      相关资源
      最近更新 更多