告诉改装应该映射某个json字段的变量?

前端之家收集整理的这篇文章主要介绍了告诉改装应该映射某个json字段的变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在谈论的REST API是响应一个结构中的一些请求:
{
  "_links": {
    "next": "NEXT_DATA_BLOCK_URL","prev": "PREV_DATA_BLOCK_URL","self": "CURRENT_DATA_BLOCK_URL"
  },"RESPONSE_DATA_NAME": [
    {
      ... DATA_FIELDS ...
    }
  ]
}

“RESPONSE_DATA_NAME”是数据“名称” – 根据所需请求进行更改.例如,它可能是“团队”或“消息”.

因此,我创建了一个泛型类与以下成员:

public class PagedResponse<T> {
  public PagingLinks _links;
  public List<T> _data;
}

有没有什么办法可以设置我的RestAdapter,以便它始终将“RESPONSE_DATA_NAME”映射到“_data”成员,无论实际是什么字段名称

谢谢^ _ ^

解决方法

使用gson,您可以使用@SerializedName对_data字段进行注释.此注释的参数(值)是序列化和反序列化对象时要使用的名称.例如,Java字段_data在JSON中表示为RESPONSE_DATA_NAME.
public class PagedResponse<T> {

    public PagingLinks _links;
    @SerializedName(value="RESPONSE_DATA_NAME")
    public List<T> _data;
}

进一步见doc

如果你想控制json字段,那么你必须像下面这样写自定义的de-serializer

public class CustomDeserializer implements JsonDeserializer<PagedResponse> {

    @Override
    public PagedResponse deserialize(final JsonElement json,final Type typeOfT,final JsonDeserializationContext context)
            throws JsonParseException {

        Gson gson = new Gson();
        PagedResponse pagedResponse = new PagedResponse<>();
        List list = new ArrayList<>();

        pagedResponse = gson.fromJson(json,PagedResponse.class);

        Type listType = new TypeToken<List>() {}.getType();

        Set<Entry<String,JsonElement>> enteries = json.getAsJsonObject().entrySet();
        for (Entry<String,JsonElement> entry : enteries) {
            JsonElement jsonElement = (JsonElement) entry.getValue();
            if (jsonElement.isJsonArray()) {
                list.add(gson.fromJson(jsonElement,listType));
            }
        }
        pagedResponse.set_data(list);
        return pagedResponse;

    }
}

终于解析了

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(PagedResponse.class,new CustomDeserializer());
Gson gson = gsonBuilder.create();

gson.fromJson(Your_JSON_STRING_HERE,PagedResponse.class);
原文链接:https://www.f2er.com/js/154396.html

猜你在找的JavaScript相关文章