gpt4 book ai didi

java - 按位置将 JSONArray 映射到对象

转载 作者:行者123 更新时间:2023-11-30 04:23:11 25 4
gpt4 key购买 nike

在我正在使用的 API 中,我收到了纯 JSON 数组形式的某个部分,而不是普通的键 => 值对。这很愚蠢,但这就是我必须面对的。

示例:

{"build":29625,"list": [
[312218505,1000,624437010,21997878697,35228,0,0,0],
[186873474,0,0,0,0,-1,0,0]
...
]}

问题是让 Google GSON 将每个数组位置映射到普通对象中的字段。毫不奇怪,没有任何 native 支持,我不得不推出自己的解决方案:每个需要转换的“请求”都实现一个 CustomConvert 接口(interface),该接口(interface)具有 convertToObjects()convertToJson( ) 方法。每个“条目”都有一堆带有 @ArrayPosition(number) 注释的字段。转换方法在两个列表之间进行转换。

由于这很难看,是否有更好的方法可以使用 Google GSON 甚至另一个 Java JSON 库来实现此目的?

最佳答案

以上评论中的示例,但这就是我想要表达的思路。请注意,我还没有测试过这个或任何东西,但如果你想走这条路,至少它应该让你走上这条路。

class OuterObject {
String build;
List<InnerObject> objectList = new ArrayList<InnerObject>();
}

class InnerObject {
int field1, field2, field3, field4, field5, field6, field7, field8;

public InnerObject(int[] params) {
// assign params accordingly
}
}

class MyDeserializer implements JsonDeserializer<OuterObject> {
@Override
public OuterObject deserialize(JsonElement je, Type type, JsonDeserializationContext jdc) throws JsonParseException
{
OuterObject oo = new OuterObject();
JsonObject jo = je.getAsJsonObject();

oo.build = jo.get("build").getAsString();
JsonArray innerObjArrays = jo.getAsJsonArray("list");
for (JsonElement e : innerObjArrays)
{
JsonArray innerArray = e.getAsJsonArray();
// This is ugly but should give you the gist
InnerClass ic = new InnerClass((int[])jdc.deserialize(innerArray, int[].class));
oo.objectList.add(ic);
}

return oo;
}

}

关于java - 按位置将 JSONArray 映射到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16490051/

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