为了账号安全,请及时绑定邮箱和手机立即绑定

在 JSONObject 中生成搜索值?

在 JSONObject 中生成搜索值?

智慧大石 2021-11-03 10:56:38
我有一个非常不同的结构 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);我想知道是否可以使用实用方法以更好、更通用的方式获取这些值?另外,我也想避免那些演员,有什么解决办法吗?
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

由于 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您不需要进行演员表的方式。您可以在此处阅读更多相关信息。


查看完整回答
反对 回复 2021-11-03
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您可以使用 Google 提供的 GSON 库将 JSON 映射到 Java。


一个例子,


public class Example {


  private String val1;

  private String val2;

  private ArrayList<int> index_key1;

  private ArrayList<int> index_key2;

  private ArrayList<int> index_key3;


  ///

  //  Getter Methods

  ///


  public String getVal1() { return val1; }

  public String getVal2() { return val2; }

  public int getIndex1() { return index_key1.get(0); }

  public int getIndex2() { return index_key2.get(0); }

  public int getIndex3() { return index_key3.get(0); }

}

然后


  Example ex = new Gson().fromJson(response.toString(), Example .class);  

之后你应该很高兴去。还有一个名为 Jackson 的库,它提供了与 GSON 类似的解决方案。


查看完整回答
反对 回复 2021-11-03
  • 2 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信