2017-03-27 24 views
-1

我有一個字符串,其中包含JSON對象列表。我如何訪問每個JSON對象? json.loads()不起作用,因爲字符串是一個對象列表,並沒有適當的格式。加載包含JSON對象列表的字符串

這裏是字符串格式我有:

myString = '[{"name": "John", "ID": "1"}, {"name": "Jane", "ID": "2"}]' 

UPDATE:

存在這樣看來,當我試着去閱讀它(生成以下錯誤的輸入文件中的特定行我已經分離出該行:https://www.dropbox.com/s/8i9aj64i5r8dmgp/line.00?dl=0):

  for line in inFile: 

      Traceback (most recent call last): 
       File "../filterBios.py", line 29, in <module> 
       line = json.loads(line); 
       File "/N/soft/rhel6/python/2.7.3/lib/python2.7/json/__init__.py", line 326, in loads 
       return _default_decoder.decode(s) 
       File "/N/soft/rhel6/python/2.7.3/lib/python2.7/json/decoder.py", line 366, in decode 
       obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
       File "/N/soft/rhel6/python/2.7.3/lib/python2.7/json/decoder.py", line 382, in raw_decode 
       obj, end = self.scan_once(s, idx) 
      ValueError: Unterminated string starting at: line 1 column 84647 (char 84647) 

我想不出是什麼原因造成的問題。

+1

當您在該字符串上調用json.loads時會發生什麼? –

+0

這似乎是一個完全有效的JSON字符串;一組對象是好的。請給出一個真正重現問題的[mcve]。 – jonrsharpe

+0

你的字符串是有效的,我能夠使用'json.loads()'沒有問題。 – martineau

回答

-1

json.loads()似乎與您提供的字符串正常工作。 JSON對象的list是從可以通過索引輕鬆訪問的字符串創建的。

In []: a = json.loads(myString) 

In []: a 
Out[]: [{'ID': '1', 'name': 'John'}, {'ID': '2', 'name': 'Jane'}] 

In []: type(a) 
Out[]: list 

In []: len(a) 
Out[]: 2 

In []: a[0] 
Out[]: {'ID': '1', 'name': 'John'} 

In []: type(a[0]) 
Out[]: dict 
+0

@ AG100這是一個完全獨立的問題。您可以使用上下文管理器從文件讀取並迭代這些行。只要您可以將'myString'推導爲字符串類型對象,此方法就會工作。 –

+0

請參閱OP中的更新 – AG100

0

我想通了!輸入文本文件有一個NEL字符,事實證明: codec.open() 無法處理。改用: io.open() 和「ValueError:Unterminated string」錯誤將消失!

相關問題