Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串化JSON->;Python服务器使用字符串化的键获取dict_Python_Json_String - Fatal编程技术网

字符串化JSON->;Python服务器使用字符串化的键获取dict

字符串化JSON->;Python服务器使用字符串化的键获取dict,python,json,string,Python,Json,String,这是JS代码,jsData应该发送到服务器(Python)。 在服务器上,我得到类似{{id:'E1',名字:'Peter',姓氏:'funcy',项目:{id:'P1'},活动:[{id:'A1'},{id:'A2'}]};':'':'''} 有没有一种聪明的方法可以从“外部dict”中提取字符串“内部dict” Python有一个内置的JSON解析库。添加import json提供基本的json解析功能,可按如下方式使用: var jsData = { id: 'E1

这是JS代码,jsData应该发送到服务器(Python)。 在服务器上,我得到类似{{id:'E1',名字:'Peter',姓氏:'funcy',项目:{id:'P1'},活动:[{id:'A1'},{id:'A2'}]};':'':'''}


有没有一种聪明的方法可以从“外部dict”中提取字符串“内部dict”

Python有一个内置的JSON解析库。添加
import json
提供基本的json解析功能,可按如下方式使用:

var jsData = {
    id:         'E1',
    firstname:  'Peter',
    lastname:   'Funny',
    project: { id: 'P1' },
    activities: [
        { id: 'A1' },
        { id: 'A2' }
    ]};

var jsonData = JSON.stringify(jsData);


$('#click').click(function(){

    $.ajax({
        url: "test/",
        type: "POST",
        data: jsData,
        dataType: "json",
        success: function (data){
        console.log(data);
        },
        error:function(){$('#text').html('FATAL_ERROR')}

    })
})
更多信息请点击此处:
因为您使用了错误的变量

import json
personString = "{'{id:'E1',firstname:'Peter',... " # This would contain your JSON string
person = json.loads( personString ) # This will parse the string into a native Python dictionary, be sure to add some error handling should a parsing error occur

person['firstname'] # Yields 'Peter'
person['activities'] # Yields a list with the activities.
当您传递一个简单的javascript字典时,jQuery以百分位编码格式对键和值进行编码。这就是为什么您将内部dict视为字符串的原因

理想情况下(IMO),您必须传递JSON字符串,而不是部分百分位编码的字符串


请注意,您可能必须更改服务器读取数据的方式。这样就不再有HTTP/POST请求参数。HTTP实体部分中只有一个简单的JSON字符串。

我不知道您在服务器端使用的是哪个框架,但您应该能够访问类似于
request.body的内容并获取数据。顺便说一下,当您使用
数据类型时,您希望从服务器返回的类型是
。您应该使用
contentType:“application/json”
通知服务器您请求中的数据类型。对,这是一个错误,我用这两个变量测试了它!这两种方法似乎都很有效。contentType:“application/json”导致我在服务器上得到一个空的dict。由于personString是无效的json,因此json.loads将抛出“Expecting property name included in double quotes”,因为
是单引号。这显然是一个示例字符串。
var jsonData = JSON.stringify(jsData);
..
$.ajax({
      ..,
      contentType: "application/json", //Remember to set this.
      data: jsData,
            ^^^^^^ => Shouldn't you be passing "jsonData" here?