java - 在 JSONObject 中生成搜索值?
问题描述
我有一个非常不同的结构 JSONObject。我正在使用 json.simple 从对象中获取值,如下所示:
String val1 = ((LinkedHashMap<String, String>) response.get("key1")).get("inner_key1");
String val2 = ((LinkedHashMap<String, String>) response.get("key1")).get("inner_key2");
int index1 = (int) ((ArrayList) response.get("index_key1")).get(0);
int index2 = (int) ((ArrayList) response.get("index_key2")).get(0);
int index3 = (int) ((ArrayList) response.get("index_key3")).get(0);
我想知道是否可以使用实用程序方法以更好、更通用的方式获取这些值?另外,我也想避免那些演员,有什么解决办法吗?
解决方案
由于 JSON 中的键始终相同,因此您可以创建一个类并将键指定为实例变量。现在您可以使用Jackson library's Object Mapper
转换为JSON string
,JSON Object
如下面的代码所示。
public class Vehicle{
private String brand = null;
private int doors = 0;
public String getBrand() { return this.brand; }
public void setBrand(String brand){ this.brand = brand;}
public int getDoors() { return this.doors; }
public void setDoors (int doors) { this.doors = doors; }
}
Insdie 的 main 函数可以编写如下代码:
ObjectMapper objectMapper = new ObjectMapper();
String carJson =
"{ \"brand\" : \"Mercedes\", \"doors\" : 5 }";
try {
Vehicle vehicle= objectMapper.readValue(carJson, Vehicle.class);
System.out.println("car brand = " + vehicle.getBrand());
System.out.println("car doors = " + vehicle.getDoors());
} catch (IOException e) {
e.printStackTrace();
}
此外,使用Object Mapper
方式你不需要做演员。你可以在这里阅读更多关于它的信息。
推荐阅读
- swift - 从领域结果 Swift 中将 Int 转换为字符串
- python - Django - 带有外键的表格与画廊建模
- php - MySQL Now() 在两个日期时间时区之间
- php - 在 Woocommerce 3 中对购物车项目使用 Conditional has_term() 函数
- json - 从python中的eulxml序列化时JSON序列化为空
- python - 如何将 Delaunay 三角剖分复制到新点?
- praat - 是否可以在 praat 中自动添加层级
- jquery - 使用 jquery 在 cakephp 2.x 中创建动态下载 html 链接
- c# - C# ASP.NET:如何为每种方法自动解码我的不记名令牌?
- apache-spark - Apache Spark:如何从 hdfs 文件中读取