gpt4 book ai didi

Java/Kotlin JSON 解析改进

转载 作者:IT老高 更新时间:2023-10-28 13:43:08 26 4
gpt4 key购买 nike

我使用了一个 API,它为我提供了这种类型的 JSON:

{
"data": {
"name": "Start",
"pid": "1",
"position": {
"data": {
"x": "31",
"y": "330"
},
"metadata": "empty"
}
},
"metadata": "empty"
}

我已经创建了具有与上述 JSON 结构相同的对象的类。我在 Android 中使用 retrofit 库,其中使用 GSON 来解析 JSON。

我的模型类会是这样的:

MResponse.class

public class MResponse {

@SerializedName("data")
public User user;

String metadata;
}

User.class

public class User {

public String name;

public String pid;

@SerializedName("position")
public PositionData positionData;
}

PositionData.class

public class PositionData {

@SerializedName("data")
public Position position;

public String metadata;
}

Position.class

public class Position {

public String x;

public String y;
}

现在这对我来说很好用。但是正如您所看到的,对于每个模型,我必须创建一个具有相同结构的父级,它只会更改子级。这个事实使我用于模型的类加倍。我想问是否有更好的方法来避免所有这些类(class)。

我不想使用内部类。我在想那些像这样完成 JSON 的人一定有他们这样做的原因,也是一种使解析更容易的方法。

通常我是用来解析这种JSON结构的:

{
"data": {
"name": "Start",
"pid": "1",
"position": {
"x": "31",
"y": "330"
}
}
}

如果我遵循上面的解决方案,这里会更容易。

编辑

也欢迎 Kotlin 中的任何解决方案

编辑 2

Kotlin 解决方案 here

最佳答案

我认为您的要求是不可能的。如果有解决方案,那么它只会创建与您正在做的事情几乎相同的中间类。

在 Kotlin 中,我会这样做。甚至可以将它放在一个 .kt 文件中:

data class MResponse(@SerializedName("data") val user: User,
val metadata: String)

data class User(val name: String,
val pid: String,
@SerializedName("position") val positionData: PositionData)


data class PositionData(@SerializedName("position") val position: Position,
val metadata: String)

data class Position(val x: String, val y: String)

关于Java/Kotlin JSON 解析改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42930646/

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