使用GSON将Json解析为ObservableField

时间:2016-11-16 18:55:01

标签: android gson pojo android-databinding

我尝试使用GSON将JSON结果解析为我的POJO类。

当我的POJO看起来像

public class Content {
    public String name;
    public String shortDescription;
}

我可以成功完成此操作,将我的Json数据放在c1.name和c1.shortDescription中:

GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();

Content c1 = gson.fromJson(contentSt, Content.class);

但是当我的POJO看起来像

public class Content {
    public ObservableField<String> name= new ObservableField<String>();
    public ObservableField<String> shortDescription = new ObservableField<String>(); 
}

我收到了这个错误

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 151 path $.shortDescription

有任何建议如何解决这个问题?我很高兴能得到任何帮助,感谢您阅读我的问题。

2 个答案:

答案 0 :(得分:0)

您是否在GSON中尝试过TypeAdapter? 您可以将字段值从对象转换为JSON格式,例如:

val gsonBuilder = GsonBuilder()
gsonBuilder.setTypeAdapter(Any::class, object : TypeAdapter<*>() {
    ...
    override fun write(`in`: Any, `out`: JSONWriter) {
        // your transform code here, for example:
        if (`in`.observableFieldItem is ModelHasObservableFields) {
            `out`.observableFieldItem = `in`.observableFieldItem.get()
        }
    }
    ...
})

上面是一个示例,请记住,它的语法可能不正确,但是您可以参考以下链接:http://www.javacreed.com/gson-typeadapter-example/ 希望对您有帮助!

答案 1 :(得分:-1)

您最好使用POJO并从BaseObservable扩展。这是实现双向数据绑定的另一种方法。参考:Data Binding Library