使用 GSON 将 JSON 响应映射到 Java POJO Class
Mapping JSON response to Java POJO Class using GSON
我正在尝试使用 Gson 库将下面 JSON 映射到 POJO Class。下面是 JSON 响应和 POJO Class 以及完成的映射
import java.util.Map;
import com.google.gson.JsonElement;
public class DataResponse {
private String $status;
private Map<String, JsonElement> $payload;
public String get$status() {
return $status;
}
public void set$status(String $status) {
this.$status = $status;
}
public Map<String, JsonElement> get$payload() {
return $payload;
}
public void set$payload(Map<String, JsonElement> $payload) {
this.$payload = $payload;
}
}
这是示例 JSON。
{
"$status": "OK",
"$payload": {
"$nextStart": "123",
"$results": [
{
"$key": "101",
"score": 3,
"to": "Test1"
},
{
"$key": "102",
"score": 4,
"to": "Test2"
},
]
}
}
下面是完成的映射。 POJO class 定义有问题吗?由于我无法将 JSON 响应的所有元素映射到响应中的最内层元素。感谢您的支持,提供有用的建议。
Gson gson = new Gson();
DataResponse dataResponse = gson.fromJson(EntityUtils.toString(response.getEntity()),
DataResponse.class);
在处理编组和解组时,最好将模型定义为:
public class DataResponse {
private String $status;
private Payload $payload;
// getters and setters
}
class Payload {
private String $nextStart;
private List<Result> $results;
// getters and setters
}
class Result {
private String $key;
private String score;
private String to;
// getters and setters
}
现在,当您将 json 转换为 POJO 时:
Gson gson = new Gson();
DataResponse dataResponse = gson.fromJson(EntityUtils.toString(response.getEntity()), DataResponse.class);
它可以很容易地转换它。
此外,相信我,这对您进一步的代码处理很有帮助!
更新:如果你真的想将 json 转换为 Map,那么你可以这样做:
import java.lang.reflect.Type;
import com.google.gson.reflect.TypeToken;
Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> myMap = gson.fromJson("{'key':'value'}", type);
在此处替换 json 字符串。
我正在尝试使用 Gson 库将下面 JSON 映射到 POJO Class。下面是 JSON 响应和 POJO Class 以及完成的映射
import java.util.Map;
import com.google.gson.JsonElement;
public class DataResponse {
private String $status;
private Map<String, JsonElement> $payload;
public String get$status() {
return $status;
}
public void set$status(String $status) {
this.$status = $status;
}
public Map<String, JsonElement> get$payload() {
return $payload;
}
public void set$payload(Map<String, JsonElement> $payload) {
this.$payload = $payload;
}
}
这是示例 JSON。
{
"$status": "OK",
"$payload": {
"$nextStart": "123",
"$results": [
{
"$key": "101",
"score": 3,
"to": "Test1"
},
{
"$key": "102",
"score": 4,
"to": "Test2"
},
]
}
}
下面是完成的映射。 POJO class 定义有问题吗?由于我无法将 JSON 响应的所有元素映射到响应中的最内层元素。感谢您的支持,提供有用的建议。
Gson gson = new Gson();
DataResponse dataResponse = gson.fromJson(EntityUtils.toString(response.getEntity()),
DataResponse.class);
在处理编组和解组时,最好将模型定义为:
public class DataResponse {
private String $status;
private Payload $payload;
// getters and setters
}
class Payload {
private String $nextStart;
private List<Result> $results;
// getters and setters
}
class Result {
private String $key;
private String score;
private String to;
// getters and setters
}
现在,当您将 json 转换为 POJO 时:
Gson gson = new Gson();
DataResponse dataResponse = gson.fromJson(EntityUtils.toString(response.getEntity()), DataResponse.class);
它可以很容易地转换它。
此外,相信我,这对您进一步的代码处理很有帮助!
更新:如果你真的想将 json 转换为 Map,那么你可以这样做:
import java.lang.reflect.Type;
import com.google.gson.reflect.TypeToken;
Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> myMap = gson.fromJson("{'key':'value'}", type);
在此处替换 json 字符串。