2013-11-27 109 views
1

我有一個JSON:是空行允許JSON

[ 
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName": "Jones" } 
] 

我知道是簡單地接受了null設定值:

[ 
{ "firstName":"John" , "lastName":null}, 
{ "firstName":"Anna" , "lastName":null }, 
{ "firstName":"Peter" , "lastName": null } 
] 

但我不知道是否有空/空行的選項。像

[ 
{ "firstName":"John" , "lastName":"Doe" }, 
null, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
null, 
{ "firstName":"Peter" , "lastName": "Jones" }, 
null 
] 

雖然我不知道一個空行是否被允許在JSON格式或沒有,我只是想,如果它是允許的,那麼如何遍歷該JSON對象。沒有空行就很容易在任何語言中迭代,但如果我們有空行呢?

問這個空行事情的主要目的是:我將JSON轉換爲HTML表格,HTML表格確實包含空行。 json2html

回答在JS/JavaScript廣告也將雖然我對蟒蛇

+0

有趣的問題。雖然我想知道在哪種情況下它有空行是有意義的。 –

+0

其實我遇到了很多包含空行的JSON文件,並且正如我所提到的,我一直在開發JSON到HTML轉換webapp,我想知道是否實際接受空行,以便在我的webapp中添加它的支持,雖然我有添加了對空值的支持。 – softvar

+0

我不懷疑它存在。我只是想知道,爲什麼。 –

回答

1

是,混合類型被允許在JSON名單。下面是一些蟒蛇證明:

>>> import json 
>>> data = json.loads("""[ 
    { "firstName":"John" , "lastName":"Doe" }, 
    null, 
    { "firstName":"Anna" , "lastName":"Smith" }, 
    null, 
    { "firstName":"Peter" , "lastName": "Jones" }, 
    null 
]""") 
[{u'lastName': u'Doe', u'firstName': u'John'}, None, {u'lastName': u'Smith', u'firstName': u'Anna'}, None, {u'lastName': u'Jones', u'firstName': u'Peter'}, None] 

在這個例子中,你已經創建了包含混合類型行的JSON數組,這是允許的。第一個條目是一個JSON對象,後面跟着一個None,後面跟着另一個JSON對象,依此類推。

更新:這裏是你如何可以通過此列表迭代,同時處理None

>>> for result in data: 
...  # Here, we get either a dictionary or a `None` 
...  if result: # Filter out the `None` rows. You could also do a isinstance(result, (dict)) if you're paranoid 
...   for key, value in result.iteritems(): 
...    print key, value 

lastName Doe 
firstName John 
lastName Smith 
firstName Anna 
lastName Jones 
firstName Peter 
+0

謝謝@VooDooNOFX,請你告訴如何迭代(for循環作爲鍵值)這個json來提取數據。我的意思是我嘗試迭代,但由於'null'作爲一行,它會拋出異常。有什麼辦法來處理'空行'? – softvar

+0

@softvar:查看如何正確迭代集合的編輯。 – VooDooNOFX

+0

完美答案的人! – softvar

1

工作在jsonlint接受以下JSON是一個有效的。所以我認爲null是允許的。

[ 
    { 
     "firstName": "John", 
     "lastName": "Doe" 
    }, 
    null, 
    { 
     "firstName": "Anna", 
     "lastName": "Smith" 
    }, 
    null, 
    { 
     "firstName": "Peter", 
     "lastName": "Jones" 
    }, 
    null 
] 

但以下JSON是無效

[ 
    { 
     "firstName": "John", 
     "lastName": "Doe" 
    }, 
    null, 
    { 
     "firstName": "Anna", 
     "lastName": "Smith" 
    }, 
    null, 
    { 
     "firstName": "Peter", 
     "lastName": "Jones" 
    }, 
    { 
     null: null 
    }, 
    null 
] 

的錯誤是

Parse error on line 16: 
... }, {  null: null }, 
---------------------^ 
Expecting 'STRING', '}' 
+0

所以你的意思是'null'行在Pure'JSON'中是允許的嗎? – softvar

+0

我認爲它是「null作爲一行允許」 – Damodaran

+0

如何迭代這種JSON包含'null作爲一個行'?我遇到了問題,因爲在這裏 - '對於鍵值,obj'的東西 – softvar