Преобразование XML-данных LinkedIn в JSON на Java

Я делаю приложение LinkedIn, которое в основном написано на JavaScript и Flash, но все данные поступают с прокси-сервера Java. Мне нужно, чтобы данные были в формате JSON, и, к сожалению, LinkedIn поддерживает только XML. Лучшее решение — преобразовать XML в JSON на сервере, прежде чем отправить его обратно клиенту, но, по общему признанию, мои навыки Java не сильны. У меня есть код, который вроде бы должен работать, но я получаю исключение JSONObject.

Я использую пакет org.json для управления XML: http://json.org/java/

Вот фрагмент Java, который пытается преобразовать XML в JSON. Это некрасиво, но я просто пытаюсь добиться прогресса в преобразовании данных:

public static String readResponse(HttpResponse response) {
    System.out.println("Reading response...");

    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(
                response.getEntity().getContent()));
        String readLine;
        String innhold = "";

        while (((readLine = br.readLine()) != null)) {
            innhold += readLine;
        }

        try {
            JSONObject myJ = new JSONObject();
            String ret = myJ.getJSONObject(innhold).toString();
            System.out.println(ret);

            return ret;
        } catch (Exception e) {
            System.out.println(e);
        }

        return innhold;
    } catch (IOException e) {
        System.out.println(e);
        return null;
    }
}

Вот данные, очень похожие на то, что я пытаюсь преобразовать:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person> 
    <first-name>First</first-name>  
    <last-name>Last</last-name>  
    <headline>My Profile</headline>      
    <site-standard-profile-request>    
    <url>http://www.linkedin.com/profile</url>  
    </site-standard-profile-request>
</person>

И вот исключение, которое я получаю:

org.json.JSONException: JSONObject["<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><person>  <first-name>First<\/first-name>  <last-name>Last<\/last-name>  <headline>My Profile<\/headline>  <site-standard-profile-request>    <url>http://www.linkedin.com/profile<\/url>  <\/site-standard-profile-request><\/person>"] not found.

Любая помощь приветствуется, спасибо!


person jeremyckahn    schedule 08.10.2010    source источник


Ответы (2)


Мэдс, это помогло! Большое спасибо, я знал, что есть очень простое решение, которого я просто не видел. Вот волшебная строка, которая преобразует строку XML в JSON:

String ret = XML.toJSONObject(aStringOfXml).toString();
person jeremyckahn    schedule 09.10.2010

Похоже, вы используете неправильный объект и метод. JSONObject.getJSONObject() ожидает, что вы предоставите ключ для поиска объекта, а не произвольную строку XML.

У вас нет ключа, соответствующего этой строке XML, поэтому поиск завершается ошибкой, и вы получаете исключение, что объект (с указанным ключом) не найден.

Вы пытаетесь разобрать XML и сериализовать как JSON.

Я считаю, что вы могли бы использовать XML.toJSONObject

person Mads Hansen    schedule 09.10.2010