首页 > 解决方案 > 如何从 JsonObject java 中恢复值

问题描述

我有一个 JSonObject 列表,我只想恢复 json 中两个变量的值。

在 java 8 中,我找不到函数 getJSONObject,可能是它无法识别。首先,我将我的 json 添加到JSONObject. 但是当我想get它的时候,编辑Intellij建议只使用get函数。

示例:records.get(0).get("id")我得到了下面的结果,但是当我想恢复里面的变量时:records.get(0).get("id").get("875488")...我得到了一个错误。

My code:


JSONArray JSONArray = (JSONArray) obj;
List<JSONObject> records = new ArrayList<JSONObject>(); 

    for (int i=0; i<JSONArray.size(); i++) {

        records.add( (JSONObject) JSONArray.get(i) );

    }

我试图恢复的第一个拖车价值,"lat""lon"我无法到达。有人可以帮助我吗?

我想要这样的结果:

lat = 12.13

lon =  5.02

谢谢你。

标签: javajsonintellij-idea

解决方案


首先,JAVA-json 的正确 Maven/Gradle 依赖项是

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180813</version>
</dependency>

如果JSONObject#getJSONObject找不到该方法,则说明您做错了什么。


对于代码部分,应该这样做。适应你的需要。

final JSONArray jsonArray = new JSONArray(source);
final int length = jsonArray.length();

for (int i = 0; i < length; i++) {
    final JSONObject jsonObject = jsonArray.getJSONObject(i);
    final JSONObject forecastOrig =
            jsonObject.getJSONObject("875488")
                      .getJSONObject("forecast_orig");

    final double lon = forecastOrig.getDouble("lon");
    final double lat = forecastOrig.getDouble("lat");

    System.out.println(lon);
    System.out.println(lat);
}

推荐阅读