在JSON对象中包装代码

时间:2015-12-16 07:17:47

标签: python json rest

我正在尝试将一段代码传递给REST服务器,该服务器包含在JSON对象中。示例代码如下所示

data = { 'code': textwrap.dedent("""\
val NUM_SAMPLES = 100000;
val count = sc.parallelize(1 to NUM_SAMPLES).map { i =>
val x = Math.random();
val y = Math.random();
if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _);
println(\"Pi is roughly \" + 4.0 * count / NUM_SAMPLES)
""")
}

r = requests.post(statements_url, data=json.dumps(data), headers=headers)

但是我收到以下错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/requests-2.8.1-py2.6.egg/requests/models.py", line 805, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib64/python2.6/json/__init__.py", line 307, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python2.6/json/decoder.py", line 319, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib64/python2.6/json/decoder.py", line 338, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

我使用JSON验证器检查了JSON数据的有效性,并且存在错误

Error: Parse error on line 1:
data = {        'code': t
^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'

解决此问题的任何帮助?

2 个答案:

答案 0 :(得分:0)

无法理解什么是错的。因为一切看起来都很好,下面的代码片段在python 2.7上运行良好:

HtmlHelper

如果可能的话,提供有关该错误的更多信息以及更多重新创建它的克莱尔步骤,那么我会更新答案。

答案 1 :(得分:0)

您正在尝试解码Python文件而不是其输出。 data =不应该在JSON对象中。它只是创建输出的Python代码的一部分。这是您应该尝试验证的JSON对象:

请改为使用此代码:

from __future__ import print_function
import textwrap
import json

data = { 'code': textwrap.dedent("""\
val NUM_SAMPLES = 100000;
val count = sc.parallelize(1 to NUM_SAMPLES).map { i =>
val x = Math.random();
val y = Math.random();
if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _);
println(\"Pi is roughly \" + 4.0 * count / NUM_SAMPLES)
""")
}

print(json.dumps(data))

将其另存为emil.py并在命令行上使用python emil.py运行它。您获得的结果是一个有效的JSON对象。