2013-12-13 3 views
0

Я использую метод json.org XML.toString() для создания XML из данных JSON. Этот метод принимает аргумент JSONObject и создает эквивалентную структуру XML, но я получаю результаты, которых я не ожидаю, когда задействован массив.json.org xml generator создает неправильный вывод массива

Этот код показывает проблему:

String jsonString = "{ \"group\" : [ { \"a\" : { } }, {\"a\" : { } } ] }"; 
System.out.println(XML.toString(new JSONObject(jsonString))); 

производит:

<group><a></a></group><group><a></a></group> 

тогда я ожидал:

<group><a></a><a></a></group> 

То есть, я ожидаю, один элемент "группы" , а не по одному для каждого элемента «a».

Я использовал онлайн-валидаторы, чтобы проверить, что JSON действителен. Я что-то недопонимаю, что-то не так, или это ошибка?

+0

Duh ... Я изначально пропустил важную строку кода (XML.toString) - возможно, теперь вопрос имеет смысл! – ceperman

ответ

0

Это не может быть то, что вы ожидаете, потому что объект внутри массива под названием "group" может содержать другие значения, кроме "a". Например, если JSON был вместо

{ "group" : [ { "a" : { }, "b" : { } }, {"a" : { }, "b" : { } } ] } 

ваша схема произвела бы

<group><a></a><b></b><a></a><b></b></group> 

без какого-либо разделения между двумя парами "a" и "b".

+0

Ну, это правда, но мое ожидание основано на моем примере, а не на твоем. В любом случае проблема заключается в том, почему XML имеет более одной группы. Я мог бы сделать это яснее. – ceperman

+0

Правило должно работать для * всех * случаев. Я показывал вам, как ваш выбор простого примера скрыл проблему, которая проявляется в более сложной ситуации. Это похоже на то, что вы спросили, почему все овощи кислые; Я говорю «нет, они не такие, морковь сладкая», тогда вы жалуетесь, потому что это на самом деле ревень, о котором вы думали, и о том, как я могу поднять морковь. XML имеет несколько групп, поскольку XML обычно обрабатывает массивы: повторяя элементы одного и того же типа. – Amadan

+0

спасибо - ты прав, конечно. Я просто не думал о вашем ответе. Мое мышление было омрачено, потому что в моем использовании JSON я всегда использую однородные массивы. – ceperman

Смежные вопросы