Q. url json 파싱하는데 에러

기본 아바타 김광호 2019. 01. 22. 조회수 859


안녕하세요


url에 있는 json을 가져와서 페이지에 띄울려고 합니다.


import java.io.IOException;

import java.io.InputStreamReader;

import java.net.URL;

import org.json.simple.JSONValue;

import org.json.simple.JSONArray;

import org.json.simple.JSONObject; // JSON객체를 만드는데 사용

import org.json.simple.parser.ParseException; //예외처리


public static void main(String[] args) throws IOException, ParseException {

URL url = new URL("hsas");

InputStreamReader isr = new InputStreamReader(url.openConnection().getInputStream(), "UTF-8");

JSONObject object = (JSONObject)JSONValue.parse(isr);


이렇게 하면


Exception in thread "main" java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject


이 오류가 뜹니다.


왜그러까요?



http://javastudy.tistory.com/80 참고했습니다.

공유하고 보상받기 ♥︎
댓글 0

2개의 답변이 있습니다.

질문자 & 큐레이터 채택
기본 아바타 멜로충 답변자인증
eBay Korea 2019. 01. 22 100%의 채택

안녕하세요.

에러 코드에 나와있는대로 JsonArray 형태를 JsonObject 형태로 캐스팅을 하려 해서 생긴 오류입니다.

import java.net.*;
import java.io.*;

public class ReadDataFromURL {

public static void main(String[] args) throws IOException {
if (args.length == 0) {
System.out.println("java ReadDataFromURL URL");
System.exit(0);
}
URL url = new URL(args[0]);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
char[] buff = new char[512];
int len = -1;

while( (len = br.read(buff)) != -1) {
System.out.print(new String(buff, 0, len));
}

br.close();
}
}

만약 저 Array 형태를 사용하고 싶다면 받은 데이터를 반복문으로 출력을 해주시면 됩니다.

그게 아니면

https://stackoverflow.com/questions/18440098/org-json-simple-jsonarray-cannot-be-cast-to-org-json-simple-jsonobject

이런 식으로 처리해주면 작업이 가능해지겠네요.

도움이 되셨길 바랍니다.

댓글 0
저거슨 답변자인증
BS/개발팀 2019. 01. 22 0%의 채택

일단 jsonarray로 받아온것을 jsonobject로 바꾸려고하는게 안된다고 나온거네요

InputStreamReader isr = (JSONObject)jsonParser.parse(new InputStreamReader(url.openConnection().getInputStream(), "UTF-8"));

한번테스트해보시겠어요?

댓글 0