使用gson从json文件获取项的值

j1dl9f46  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(284)

在这里,使用gson从json字符串获取项的值有点麻烦。
首先,我的代码的第一部分是从massive获得obejct:

String jsonOutput= weatherDataCollect(message);
        Gson gson = new Gson();
        JsonElement element = gson.fromJson(jsonOutput, JsonElement.class);
        JsonObject jsonObject = element.getAsJsonObject();
        System.out.println(jsonObject.toString());
        JsonArray list = jsonObject.getAsJsonArray("list");

所以现在如果我写:

JsonElement todaysWeather = list.get(0);

我得到了我所需要的东西——json的这一部分

{"dt":1549281600,"main":{"temp":-0.38,"temp_min":-1.3,"temp_max":-0.38,"pressure":1024.85,"sea_level":1027.5,"grnd_level":1024.85,"humidity":94,"temp_kf":0.91},"weather":[{"id":600,"main":"Snow","description":"небольшой снегопад","icon":"13d"}],"clouds":{"all":92},"wind":{"speed":2.11,"deg":271.5},"snow":{"3h":0.5445},"sys":{"pod":"d"},"dt_txt":"2019-02-04 12:00:00"}

在很多类似的地方。我需要从每个人那里得到这样的价值 1549281600 和我的比较,找出哪一个更接近。
代码的第一部分应该是这样的

long tomorrowTime = getTomorrowUnixTime();
        long timeDifference = Integer.MAX_VALUE;
        int minDtIndex = 0; 
    for (int i = 0; i < list.size(); i++){
   JsonElement weatherItem = list.get(i);
   Integer dt = Integer.valueOf(weatherItem.getAsString("dt").toString());
                }

但这部分 Integer dt = Integer.valueOf(weatherItem.getAsString("dt").toString()) 不起作用。它应该从每个 dt 与…兼容 tomorrowTime 第二部分如下:

long diff = Math.abs(tomorrowTime - dt);
if(diff < timeDifference){
timeDifference = diff;
minDtIndex = i;
syqv5f0l

syqv5f0l1#

Integer dt = Integer.valueOf(weatherItem.getAsString("dt").toString());

在这一行中,您将得到以下编译错误:

getAsString( ) 
in JsonElement cannot be applied

这是因为 getAsString() 不接受任何参数,这是您的语法错误。
从语义上讲,你首先要解释 JSON Element 作为 JSON Object ,一旦它是一个json对象,就可以提取名为dt的属性。
方法是:

Integer dt = new Integer(weatherItem.getAsJsonObject().get("dt").getAsInt());

我将引用这个问题并阅读关于w3学校的json格式本身的内容
其余的你可以管理自己的逻辑和编码:)快乐的编码!

相关问题