Преобразование XML-данных LinkedIn в JSON на Java - PullRequest
1 голос
/ 09 октября 2010

Я создаю приложение 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.

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

Ответы [ 2 ]

1 голос
/ 09 октября 2010

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

String ret = XML.toJSONObject(aStringOfXml).toString();
0 голосов
/ 09 октября 2010

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

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

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

...