BEGIN_ARRAY가 필요한데 1행 2에 BEGIN_OBJECT가 있었습니다.
에러가 발생하고 있습니다.
com.google.gson으로 인해 JSON을 구문 분석하지 못했습니다.Json Syntax Exception: java.lang.InlawalStateException:BEGIN_ARRAY가 필요한데 1행 2에 BEGIN_OBJECT가 있었습니다.
서버 URL
public static final String SERVER_URL = "https://maps.googleapis.com/maps/api/timezone/json?location=-37.8136,144.9631×tamp=1389162695&sensor=false";
요청을 실행하다
try {
// Create an HTTP client
HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(SERVER_URL);
// Perform the request and check the status code
HttpResponse response = client.execute(post);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
try {
// Read the server response and attempt to parse it as JSON
Reader reader = new InputStreamReader(content);
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setDateFormat("M/d/yy hh:mm a");
Gson gson = gsonBuilder.create();
List<Post> postsList = Arrays.asList(gson.fromJson(reader,
Post[].class));
content.close();
for (Post p : postsList) {
System.out.println(p.timeZoneId);
}
} catch (Exception ex) {
System.out.println("Failed to parse JSON due to: " + ex);
}
} else {
System.out.println("Server responded with status code: "
+ statusLine.getStatusCode());
}
} catch (Exception ex) {
System.out
.println("Failed to send HTTP POST request due to: " + ex);
}
포스트 클래스
public class Post {
public String timeZoneId;
public Post() {
}
}
내가 이걸 어떻게 해결할 수 있을까?
반환된 JSON은 다음과 같이 코멘트에 기재되어 있습니다.
{
"dstOffset" : 3600,
"rawOffset" : 36000,
"status" : "OK",
"timeZoneId" : "Australia/Hobart",
"timeZoneName" : "Australian Eastern Daylight Time"
}
지슨에게 당신이 가지고 있는 배열이Post
오브젝트:
List<Post> postsList = Arrays.asList(gson.fromJson(reader,
Post[].class));
넌 아냐.JSON은 정확히 1을 나타냅니다.Post
Gson이 알려주고 있어요.
코드를 다음과 같이 변경합니다.
Post post = gson.fromJson(reader, Post.class);
받은 응답은 객체 형식입니다.
{
"dstOffset" : 3600,
"rawOffset" : 36000,
"status" : "OK",
"timeZoneId" : "Australia/Hobart",
"timeZoneName" : "Australian Eastern Daylight Time"
}
다음 코드 행을 바꿉니다.
List<Post> postsList = Arrays.asList(gson.fromJson(reader,Post.class))
와 함께
Post post = gson.fromJson(reader, Post.class);
언급URL : https://stackoverflow.com/questions/20991386/expected-begin-array-but-was-begin-object-at-line-1-column-2
'programing' 카테고리의 다른 글
XHR에서 응답 Content-Type 헤더를 가져옵니다. (0) | 2023.03.15 |
---|---|
Oracle SQL Developer에서 쿼리 결과를 csv로 내보내는 방법 (0) | 2023.03.15 |
MVC 컨트롤러에서 예외를 두지 않고 $.ajax에 오류를 보고하는 방법 (0) | 2023.03.15 |
반응 경고 최대 업데이트 깊이를 초과했습니다. (0) | 2023.03.10 |
npm과 함께 "Cannot read dependencies" 오류가 발생하였습니다. (0) | 2023.03.10 |