Python 2.7 json正确的编码和解码不适用于flask、python

Python 2.7 json正确的编码和解码不适用于flask、python,python-2.7,flask,json,Python 2.7,Flask,Json,我从作为json对象的html中获取一个文本输入,并尝试处理它。但是当我尝试下面的代码时,我在编码和解码JSON时遇到了错误/(页面未呈现) @app.route('/', methods=['POST']) def my_form_post(): text = request.form['text'] #getting text-input as text = {'a':'1','b':'2'} json_input = json.dumps(text) o

我从作为json对象的html中获取一个文本输入,并尝试处理它。但是当我尝试下面的代码时,我在编码和解码
JSON
时遇到了错误/(页面未呈现)

@app.route('/', methods=['POST'])
def my_form_post():

    text = request.form['text']
    #getting text-input as text = {'a':'1','b':'2'}

    json_input = json.dumps(text)
    ordered_json = json.loads(text, object_pairs_hook=ordereddict.OrderedDict)
    print ordered_json
    processed_text = htmlConvertor(ordered_json)
    #rep(jso)
    return render_template("my-form.html",processed_text=processed_text)
但是当我使用一个本地
JSON
变量作为
jso
时,一切正常。同样的输入,当我提供html输入时,它给出了一个错误,我可以;除了显示内部服务器错误之外,我甚至看不到错误 服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出错。

 @app.route('/', methods=['POST'])
        def my_form_post():

            jso = '''{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}'''

        json_input = json.dumps(jso)
        ordered_json = json.loads(jso, object_pairs_hook=ordereddict.OrderedDict)
        print ordered_json
        processed_text = htmlConvertor(ordered_json)
        #rep(jso)
        return render_template("my-form.html",processed_text=processed_text)
更新:

现在一切正常,但对于整数,它不起作用。 例如:

工作完美,但

{"name":"yo","price":250}
不是。
解决这个问题的办法是什么?任何特定的答案或我都必须在python中检查
integer
,然后在应用任何
JSON
相关方法和功能之前将其转换为字符串。

不确定这是否是您的问题,但
{'a':'1','b':'2'}
不是有效的JSON对象,因为有单引号:

>>> json.loads("{'a':'1','b':'2'}")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  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 336, in raw_decode
    obj, end = self._scanner.iterscan(s, **kw).next()
  File "/usr/lib64/python2.6/json/scanner.py", line 55, in iterscan
    rval, next_pos = action(m, context)
  File "/usr/lib64/python2.6/json/decoder.py", line 171, in JSONObject
    raise ValueError(errmsg("Expecting property name", s, end))
ValueError: Expecting property name: line 1 column 1 (char 1)
还请注意,要在出现异常时获取代码500错误的堆栈跟踪,必须按如下方式启动flask服务器:

app.run(debug = True)

请添加您得到的完整回溯console@PaoloCasciello:我没有得到任何回溯,因为我的调试模式没有打开,是的,打开它并使用双引号解决了我的问题
app.run(debug=True)
给了我完整的洞察力,是的,双引号解决了整个问题。谢谢你指出这一点
>>> json.loads("{\"a\":\"1\",\"b\":\"2\"}")
{u'a': u'1', u'b': u'2'}
app.run(debug = True)