gpt4 book ai didi

java - Gson如何解析自定义字段

转载 作者:行者123 更新时间:2023-12-02 12:44:04 25 4
gpt4 key购买 nike

我想使用 gson 解析 Json。但 gson 没有将特定的 jsonProperty 解析为自定义字段下面是一个例子:

 `json String :  { "SONUMBER": "PSO1706000006  "}`

java类

  public class Item {


@SerializedName("SONUMBER")
@Expose
public BindableString sONUMBER;
}

BindableString.java 类

public class BindableString extends BaseObservable {

private String value = "";


public String get() {
return !value.isEmpty() ? value : "";
}

public void set(String value) {
if (!Objects.equals(this.value, value)) {
this.value = value;
notifyChange();
}
}

public boolean isEmpty() {
return value == null || value.isEmpty();
}

@Override
public String toString() {
return value;
}

@BindingConversion
public static String bindableString(BindableString bindableString) {
if (bindableString != null) {
return bindableString.value;
} else {
return null;
}
}
}

但是当我解析 json 时,我在 Item.sONUMBER 变量中得到 null

我想将 json 值解析为 Item.sONUMBER。

我应该如何实现这一目标,有任何可用的替代方案吗?

最佳答案

为此,您可以像这样编写自定义类型反序列化器,

import java.lang.reflect.Type;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;

public class BindableStringDeserializer implements JsonDeserializer<BindableString> {

@Override
public BindableString deserialize(JsonElement json, Type arg1,
JsonDeserializationContext arg2) throws JsonParseException {
BindableString bindableString = new BindableString();
bindableString.set(json.getAsString());
return bindableString;
}

}

并创建一个像这样的 Gson 对象,然后它就可以工作了,

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(BindableString.class, new BindableStringDeserializer());
Gson gson = gsonBuilder.create();

关于java - Gson如何解析自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44845897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com