在 django 视图中接受嵌套 json 对象的最佳方法是什么?
请求
$.ajax({
type: 'POST',
url: 'results/' + self.id + '/',
contentType:"application/json; charset=utf-8",
data: JSON.stringify(values),
dataType:"json",
...
values
是一个 javascript 字典对象。
Object {Cart: Array[2], Di: "5"}
Cart: Array[2]
0: Object
N: 1
PR: 0.75
__proto__: Object
1: Object
N: "2"
PR: 2.5
__proto__: Object
length: 2
__proto__: Array[0]
Di: "5"
风景
def do_something(request,pid):
print json.loads(request.body)
这是原始帖子数据
{"Cart":["{\"PR\":4,\"N\":1}","{\"PR\":1.2,\"N\":\"2\"}"],"Di":"5"}
问题在于json.loads
将数组中的内部字典保留Cart
为 unicode 对象。
我试过使用jsonpickle和旧的simplejson
,但我得到了相同的结果。
这看起来很基本 - 是否有一个简单的解决方案?
编辑
阅读您的帖子后,我知道这可能是客户端问题,但我仍然在 ajax 调用中仅对 json 数据进行一次字符串化。
这就是我生成的方式values
基本案例 - 简单的 Dict
self.serialized_value = function() {
if (self.value()) {
var d = {}
d[self.name] = self.value();
return (d);
}
};
对于包含多个参数的对象
self.get_serialized_values = function() {
var values = {};
$.map(self.parameters(), function(p) {
$.extend(values, p.serialized_value());
});
return values;
};
对于包含其他对象的对象
self.serialized_value = function() {
var child_data = [];
$.each(self.items() , function(k,v) {
child_data.push(v.get_serialized_values());
});
var d = {}
d[self.name] = child_data;
return (d);
};
最后,JSON.stringify
仅在 ajax 调用中应用
..
data: JSON.stringify(self.get_serialized_values())
..
json 在代码中的哪个位置被字符串化了两次?