簡體   English   中英

如何將字符串(類似於json)轉換為json對象?

[英]How do I convert a string (which is like json) to a json object?

 if(i!=0):
     json_str+=str({"tag_namespace": "dba_inops", "tag_key": "db_schema", "tag_value": "" + schema_arr.pop(i) + ""},)+","
     machine_arr.pop(i);
     #print json_str
 else:
     json_str+=str({"tag_namespace": "dba_inops", "tag_key": "db_schema", "tag_value": "" + schema_arr.pop(i) + ""})
     new_machine=machine_arr.pop(i);
     print json_str;

所以輸出json_string就像這樣:

{'tag_key': 'db_schema', 'tag_namespace': 'dba_inops', 'tag_value': 'xyz'}

但是:-

new_tagmap.map=[json_str]
print new_tagmap.map;

當我嘗試將構造的json_str放入數組中時,在無效的json數組括號后得到雙引號。

["{'tag_key': 'db_schema', 'tag_namespace': 'dba_inops', 'tag_value': 'xyz'}"]

如果我替換第一個和最后一個字符,它將替換{。

有沒有一種方法可以將這樣的字符串轉換為json,這樣我就可以將它作為json對象直接加載到數組中,而無需使用“”。

仍然無法添加這樣的東西:

    {'tag_namespace': 'dba_inops', 'tag_key': 'db_name', 'tag_value': 'hi' },
    {'tag_namespace': 'dba_inops', 'tag_key': 'db_name', 'tag_value': 'abc' }

它說

引發ValueError(errmsg(“ Extra data”,s,end,len(s)))ValueError:額外數據:當我在兩個列表之間時,第1行第77列-第1行第78列(字符77-78)的bcoz做一個loads()。

我建議使用Python內置的json解析器。 這是文檔 您可以使用json.loads創建結構,並使用json.dumps進行解碼。 該鏈接包含許多易於遵循的示例。

如果要添加或更改對象,則應以其Python表示形式進行。 因此,例如,假設我加載了以下JSON字符串:

>>> x = json.loads('{ "animals": ["cat", "dog", "fish"], "numbers": [1, 2, 3], "people": ["joe", "sally", "beth"] }')

它創建一個Python字典。 字典中的每個條目都包含以下內容:

>>> x
 {u'animals': [u'cat', u'dog', u'fish'],
 u'numbers': [1, 2, 3],
 u'people': [u'joe', u'sally', u'beth']}

現在,讓我們想象一下我想在動物列表中添加“鼠標”。 我可以直接使用Python代碼使用Python的列表追加功能來實現。 無需字符串操作! 這是更好,更清潔的方法。

x['animals'].append("mouse")

現在,讓我們將該Python對象轉換回JSON。 看哪!

>>> my_new_json_string = json.dumps(x)
>>> print my_new_json_string
{"animals": ["cat", "dog", "fish", "mouse"], "numbers": [1, 2, 3], "people": ["joe", "sally", "beth"]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM