반응형
GSON을 사용하여 JSON 파일을 해석하는 방법
다음과 같은 제품에 대한 리뷰가 포함된 매우 단순한 JSON이 있습니다.
{
"reviewerID": "A2XVJBSRI3SWDI",
"asin": "0000031887",
"reviewerName": "abigail",
"helpful": [0, 0],
"unixReviewTime": 1383523200,
"reviewText": "Perfect red tutu for the price. ",
"overall": 5.0,
"reviewTime": "11 4, 2013", "summary": "Nice tutu"
}
{
"reviewerID": "A2G0LNLN79Q6HR",
"asin": "0000031887",
"reviewerName": "aj_18 \"Aj_18\"",
"helpful": [1, 1],
"unixReviewTime": 1337990400,
"reviewText": "This was a really cute",
"overall": 4.0,
"reviewTime": "05 26, 2012",
"summary": "Really Cute but rather short."
}
GSON을 사용하여 Java 앱으로 읽어보고 싶습니다.각 리뷰의 결과를 보유하기 위한 클래스를 작성했습니다.
public class Review {
private String reviewerID;
private String asin;
private String reviewerName;
private ArrayList<Integer> helpful;
private String reviewText;
private Double overall;
private String summary;
private Long unixReviewTime;
private String reviewTime;
public Review() {
this.helpful = Lists.newArrayList();
}
// some getters and setters...
JSON 파일을 읽으려면 다음 코드를 사용합니다.
Gson gson = new Gson();
JsonReader reader = new JsonReader(new FileReader(filename));
Review data = gson.fromJson(reader, Review.class);
data.toScreen(); // prints to screen some values
이 코드로는 JSON에서 첫 번째 리뷰만 취득할 수 있습니다.그러면 어떻게 하면 모든 리더를 반복하여 다음 리뷰를 얻을 수 있을까요?리뷰를 목록에 저장할 필요가 없으며 오브젝트에 한 번만 액세스하면 됩니다.어떤 도움이라도 환영이다.
목록의 전체 데이터를 가져온 다음 파일이기 때문에 반복해야 합니다. 그렇지 않으면 비효율적이 됩니다.
private static final Type REVIEW_TYPE = new TypeToken<List<Review>>() {
}.getType();
Gson gson = new Gson();
JsonReader reader = new JsonReader(new FileReader(filename));
List<Review> data = gson.fromJson(reader, REVIEW_TYPE); // contains the whole reviews list
data.toScreen(); // prints to screen some values
배열로 해석합니다.
Review[] reviews = new Gson().fromJson(jsonString, Review[].class);
필요에 따라서, 다음의 방법으로 리스트를 작성할 수도 있습니다.
List<Review> asList = Arrays.asList(reviews);
p.s. json 문자열은 다음과 같습니다.
[
{
"reviewerID": "A2SUAM1J3GNN3B1",
"asin": "0000013714",
"reviewerName": "J. McDonald",
"helpful": [2, 3],
"reviewText": "I bought this for my husband who plays the piano.",
"overall": 5.0,
"summary": "Heavenly Highway Hymns",
"unixReviewTime": 1252800000,
"reviewTime": "09 13, 2009"
},
{
"reviewerID": "A2SUAM1J3GNN3B2",
"asin": "0000013714",
"reviewerName": "J. McDonald",
"helpful": [2, 3],
"reviewText": "I bought this for my husband who plays the piano.",
"overall": 5.0,
"summary": "Heavenly Highway Hymns",
"unixReviewTime": 1252800000,
"reviewTime": "09 13, 2009"
},
[...]
]
파일을 해석할 필요가 있는 경우, 이 파일을 사용하는 데 가장 적합한 솔루션을 찾습니다.HashMap<String, String>
더 나은 조작을 위해 Java 코드 내에서 사용할 수 있습니다.
다음 코드를 사용해 보십시오.
public HashMap<String, String> myMethodName() throws FileNotFoundException
{
String path = "absolute path to your file";
BufferedReader bufferedReader = new BufferedReader(new FileReader(path));
Gson gson = new Gson();
HashMap<String, String> json = gson.fromJson(bufferedReader, HashMap.class);
return json;
}
언급URL : https://stackoverflow.com/questions/29965764/how-to-parse-json-file-with-gson
반응형
'programing' 카테고리의 다른 글
polylang을 통해 페이지 언어 가져오기 및 동일한 언어 페이지로 리디렉션 (0) | 2023.04.03 |
---|---|
HttpClient에 개체를 전달하려면 어떻게 해야 합니까?PostAsync와 JSON 바디로 시리얼화하시겠습니까? (0) | 2023.04.03 |
PHP 스크립트/WP REST API에 대한 동시 AJAX 요청이 왜 이렇게 느리죠? (0) | 2023.04.03 |
배열에 값이 있는지 확인합니다(각도).JS) (0) | 2023.04.03 |
작은 따옴표를 큰 따옴표로 구분하는 방법 (0) | 2023.04.03 |