2016-11-17 73 views
0

我想附加JSON对象来形成JSON对象的列表。如何将JSON对象追加到列表中?

def GenIndentifier(options): 
    data=json.dumps([identifier,hex_dig]) 
    return data 

这里的数据是有效的JSON对象如下:

["27780741708467800000001", "e5073922dbb7a278769d52277d49c6ad3017b1ba"]

之后,我遍历GenIdentifier函数生成许多JSON对象:

data=[] 
for i in range(0,2,1): 
    ... 
    data.append(GenIndentifier(options)) 
print data 

现在JSON数据列表不是有效的JSON格式,因为会弹出一些单引号:

['["27780741708467800000000", 
"f798d2cd9aec1b98fb48b34fd249fe19c06a4a1d"]', 
'["27780741708467800000001",  
"e5073922dbb7a278769d52277d49c6ad3017b1ba"]'] 

任何想法如何解决? 我搜索了谷歌搜索,但徒劳无功。

+1

这似乎并没有被JSON数据。你正在使用的是简单的列表。 JSON通常遵循键值格式。 –

+1

@PrateekDewan废话。原始值是完全有效的JSON。 –

+0

http://www.w3schools.com/js/js_json_syntax.asp我会让你决定 –

回答

2

问题在于您正在将数据转储到GenIndentifier内部的JSON,然后将该JSON字符串附加到列表中。

相反,你应该移动JSON转换的是功能,和做底:

def GenIndentifier(options): 
    data = [identifier, hex_dig] 
    return data 

data = [] 
for i in range(0, 2, 1): 
    ... 
    data.append(GenIndentifier(options)) 
data = json.dumps(data) 
print data 
+0

感谢您的建议:有输出 '[[ “27780741708467800000000”, “f798d2cd9aec1b98fb48b34fd249fe19c06a4a1d”],[ “27780741708467800000001”, “e5073922dbb7a278769d52277d49c6ad3017b1ba”]]” 一个有效的JSON,但有两个额外的单引号 –

+0

这看起来有效的给我。单引号只是表明整个事情是一个字符串,当然? –

+0

是的,你是对的。非常感谢你的帮助! –

-2

这是否工作?

data=[] 
for i in range(0,2,1): 
    ... 
    data.append(GenIndentifier(options)[i]) 
print data 
  • 通知我添加了[I],这样您将索引到的数据,你追加之前。
+0

现在,您正在索引'append'的返回值,即'None'。 – jojonas

+0

您的权利,我做了这个很快,让我修复它 –

+0

有@jojonas应该修复它,我把[i]移动到括号中,因为它应该是 –

0

当你调用json.dumps()这两个元素的列表转换对象,在这种情况下,一个JSON格式化的字符串。然后您将该字符串列表添加到列表中。

如果您要查找的是单个JSON格式的列表清单,您应该避免在GenIdentifier对象内执行json.dumps(),并且只需从该函数返回一个列表即可。然后在最后,你做print data,而不是做print json.dumps(data)

def GenIndentifier(options): 
    data=[identifier,hex_dig] 
    return data 

data=[] 
for i in range(0,2,1): 
    ... 
    data.append(GenIndentifier(options)) 
data = json.dumps(data) 
print data 

这将导致如下:

[["27780741708467800000000", "f798d2cd9aec1b98fb48b34fd249fe19c06a4a1d"], 
["27780741708467800000001", "e5073922dbb7a278769d52277d49c6ad3017b1ba"]] 
+0

感谢您的建议:还有就是输出“[‘27780741708467800000000’,‘f798d2cd9aec1b98fb48b34fd249fe19c06a4a1d’],[‘27780741708467800000001’,‘e5073922dbb7a278769d52277d49c6ad3017b1ba’]]” 一个有效的JSON,但有两个额外的单引号 –

+0

单引号来自事实上'json.dumps'返回一个字符串,并且当你打印一个字符串对象时,它被包裹在单引号中。 –

+0

要修复,只需更改打印行。 –