아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
기민한진도개272
기민한진도개27219.01.22

url json 파싱하는데 에러

안녕하세요


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 참고했습니다.

55글자 더 채워주세요.
답변의 개수
2개의 답변이 있어요!
  • 안녕하세요.

    에러 코드에 나와있는대로 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

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

    도움이 되셨길 바랍니다.


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

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

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