Я использую AngularJS шаблон для отображения JSON как список/древовидная структура.Использование рекурсии для изменения JSON
My JSON глубина неизвестна. В большинстве случаев работает мой код. Есть только один случай, с которым я столкнулся до сих пор, что не работает.
Мой JSON образец:
[
{
"type":"image",
"bitmapname":{
"text":"Image_12.bmp"
},
"command":[
{
"type":"close",
"text":"1234"
},
{
"type":"place",
"text":"company"
},
{
"type":"key",
"key": "Tab"
},
{
"type":"keyboard",
"text":"welcome",
"command": [
{
"type":"open",
"text":"1234"
},
{
"type":"home",
"text":"company"
}
]
}
]
},
{
"type":"image",
"bitmapname":{
"text":"image_14.bmp"
},
"command":{
"type":"move",
"text":"right"
}
}
]
Выход ниже:
AngularJS код:
<script type="text/ng-template" id="xml.html">
<!-- XML is coming from controller as a JSON shown in my sample -->
<ul>
<li ng-repeat="item in XML">
[[ item["type"] ]]
<div ng-include=" 'xml.html' "
onload="XML = item.command">
</div>
</li>
</ul>
</script>
<div ng-include=" 'xml.html' ">
Как вы заметили, последний элемент списка пуст, потому что "command"
- не A rray
Я пытаюсь создать рекурсивную функцию, которая будет идти через JSON и создавать массивы на одном элементе "command": [{...}]
в тех местах, где у меня есть "command": {...}
Может кто-нибудь предложить решение, которое будет преобразовывать объект в массив объект, где у меня есть один-единственный объект?
ПРИМЕЧАНИЕ
У меня нет контроля над JSON не отправляются с Django поддержал. Python использует расширение xmltodict
для преобразования XML в словарь. Всякий раз, когда теги XML не имеют дочерних элементов, он не создает список. Он создает только словарь.
Можете ли вы рассказать нам, почему ваш JSON не последовательно, используя массив для '.command' свойств ? Лучшим решением здесь было бы начать с согласованного формата данных и не находить обходные пути для непоследовательного. – JLRishe
JSON создается из XML. И расширение python, которое преобразует XML в JSON, не создает массив, когда тег «command» в XML не имеет детей. – Brian
У меня возникли аналогичные проблемы при использовании автоматической сериализации XML -> JSON. Я думаю, что хорошим решением было бы использовать подход, основанный на структуре данных, к сериализации данных, но я добавил ответ с обходным решением, которое вы запрашиваете. – JLRishe