如何在Python中创建由其他JSON对象的一部分组成的新JSON对象?

时间:2015-10-11 18:32:16

标签: javascript python json post get

我有一个返回JSON对象的服务器,如下所示:

object = {"name": "VM1", "load": .5" (assume there are other key/value pairs here, and before "name" as well...)}

我想为POST创建一个新的JSON对象,该对象只包含名称和负载。

当我尝试类似的事情时:

testSend1 = json.dumps({})   
testSend1["name"] = "firstVM"

我收到错误:" TypeError:' str'对象不支持项目分配"。此外,我无法将负载作为整数进行比较并从我的JSON对象中访问它们。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Q1。为什么错误?

因为您正在尝试为序列化的JSON格式的流分配值。服务器响应可能采用JSON流格式(问题中不清楚)。您需要将json.loads反序列化为Python对象以进行此类修改

Q2。

  

我想为刚刚组成的POST创建一个新的JSON对象   名称和负荷。 (假设我需要创建一个新的JSON对象和   不能只是切断日期)。

如果它是一个扔掉的对象,你可以在python对象上使用 pop 方法。

进行必要的更改后。您可以调用json.dumps将其序列化为JSON对象。

建议:避免使用“object”作为名称:)

<强>插图:

import json

response = {"name": "VM1", "load": .5, "date": "Tuesday"}
print "Initial Value :", response

response["name"]="firstVM1"
print "After modification :", response

response.pop("date")
print "After removing date :", response

print "After serializing.."
serialized_data = json.dumps(response)
print serialized_data

print "After de-seriali\ing..."
print  json.loads(serialized_data)

print "Attempting to modify serialized response"
serialized_data["name"] = "new VM"

输出:

Initial Value : {'load': 0.5, 'date': 'Tuesday', 'name': 'VM1'}
After modification : {'load': 0.5, 'date': 'Tuesday', 'name': 'firstVM1'}
After removing date : {'load': 0.5, 'name': 'firstVM1'}
After serializing..
{"load": 0.5, "name": "firstVM1"}
After de-seriali\ing...
{u'load': 0.5, u'name': u'firstVM1'}
Attempting to modify serialized response
Traceback (most recent call last):
  File "j.py", line 20, in <module>
    serialized_data["name"] = "new VM"
TypeError: 'str' object does not support item assignment