2013-11-28 5 views
0

Скажем, у меня есть произвольное вложенное JSON файл:Как красиво печатать JSON в структуру ключевых строк?

{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
    {"value": "Open", "onclick": "OpenDoc()"}, 
    {"value": "Close", "onclick": "CloseDoc()"} 
    ] 
} 
}} 

И я хочу, чтобы вывести структуру:

foo.menu.id=file 
foo.menu.value=File 
foo.menu.popup.menuitem[0].value=New 
foo.menu.popup.menuitem[0].onclick=CreateNewDoc() 
foo.menu.popup.menuitem[1].value=Open 

и так далее. Мой вариант использования заключается в том, что будет легче работать с API-интерфейсами JSON, если я смогу получить обзор ключей, которые я могу использовать в своем mashup.

Как я могу достичь этого в PHP или nodejs? Или какой-то другой инструмент? Если текстовое значение очень длинное, оно может быть усечено, чтобы быть красивыми линиями.

+0

Немного смущен, как это более полезно? Просто JSON.stringify объект, чтобы отправить его где-нибудь, JSON.parse, что данные обратно в объект, между этими двумя точками, где нужно видеть структуру? В даже порядочно написанном коде вам не нужно беспокоиться о ключах, вы просто убедитесь, что программист, что они там, а затем вы их используете. –

+0

'console.log (JSON.parse (jsonstring))'; используйте встроенный объектный проводник в (современной) консоли браузера. – zamnuts

ответ

0

Обратите внимание, что в большинстве случаев вам нужно просто проанализировать JSON на нужном целевом языке. Если это не вариант, вы можете легко перебирать все элементы, like this:

<?php 
function unroll_obj($o, $prefix='') { 
    foreach ($o as $k => $v) { 
     if (is_array($v)) { 
      unroll_obj($v, $prefix . $k . '.'); 
     } else { 
      echo $prefix . $k . '=' . $v . "\n"; 
     } 
    } 
} 

$s = '{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
    {"value": "Open", "onclick": "OpenDoc()"}, 
    {"value": "Close", "onclick": "CloseDoc()"} 
    ] 
} 
}}'; 

$o = json_decode($s, true); 
unroll_obj($o); 
+0

Ницца! Только то, что я искал. Будьте лучше, если числовые клавиши могут иметь квадратные скобки для использования в JS. Тем не менее я соглашусь как есть. – hendry

+0

@hendry Если вы хотите использовать его в JavaScript, ** вам не нужен этот код **! Все JSON - это действительный JavaScript, поэтому просто напишите 'echo 'var data ='. $ json. ';'; ' – phihag

+0

Да, но это помогает мне быстро найти ключ, который я хочу использовать. :) – hendry

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