如何使用JAVA隔离此JSON中的值

时间:2018-10-27 04:10:14

标签: java json

这是我的JSON对象。

{
"success": true,
"data": {
    "2018-10": {
        "origin": "AKL",
        "destination": "SYD",
        "price": 552,
        "transfers": 0,
        "airline": "VA",
        "flight_number": 842,
        "departure_at": "2018-10-28T23:15:00Z",
        "return_at": "2018-10-29T21:10:00Z",
        "expires_at": "2018-10-28T23:15:00Z"
    },
    "2018-11": {
        "origin": "AKL",
        "destination": "SYD",
        "price": 562,
        "transfers": 0,
        "airline": "VA",
        "flight_number": 753,
        "departure_at": "2018-11-30T23:10:00Z",
        "return_at": "2018-12-08T20:25:00Z",
        "expires_at": "2018-10-29T07:04:24Z"
    }
},
"error": null,
"currency": "AUD"

}

我需要做的是隔离Origin,Destination,Price,Airline和Price的值,以便将它们存储在单独的ArrayList中。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于以后的任何问题,我建议您遵循How to Ask a Good Question上的指南。在发布之前,您应该始终先进行自己的研究,在发布问题时,请提供您的研究证据以及关于为什么发现的信息对您没有帮助的解释。

回到您的问题-以下代码假定您的JSON与源代码本身存储在同一包中的文件中,并且该文件名为“ data.json”。另外请注意,此代码使用gson来解析JSON数据。

package gson;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class GsonMain {

    public static void main(String[] args) throws IOException {
        Gson gson = new Gson();
        byte[] jsonBytes = Files.readAllBytes(Paths.get("./src/main/java/gson/data.json"));
        String json = new String(jsonBytes);

        Map<String,Object> result = gson.fromJson(json, new TypeToken<Map<String, Object>>(){}.getType());

        Map<String,Object> data = (Map<String, Object>) result.get("data");
        for(String key: data.keySet()){
            Map<String,Object> value = (Map<String, Object>) data.get(key);
            String origin = String.valueOf( value.get("origin") );
            String destination = String.valueOf( value.get("destination") );
            String price = String.valueOf( value.get("price") );
            String airline = String.valueOf( value.get("airline") );
            System.out.printf("origin: %s\ndestination: %s\nprice: %s\nairline: %s\n=======\n", origin, destination, price, airline);
        }
    }
}

输出:

origin: AKL
destination: SYD
price: 552.0
airline: VA
=======
origin: AKL
destination: SYD
price: 562.0
airline: VA
=======