【问题标题】:How to convert jsonify string to json in python?如何在python中将jsonify字符串转换为json?
【发布时间】:2023-03-20 17:00:01
【问题描述】:

我有一个 jsonify 字符串,如下所示。 我使用 dart (Flutter) 创建了这个字符串。 我的飞镖代码如下。

 var stud_data = {"name": "John", "id": "2021MS", "total_marks": 493};
 String encoded_data = base64Url.encode(utf8.encode(stud_data.toString())); 

encoded_data 包含“e25hbWU6IEpvaG4sIGlkOiAyMDIxTVMsIHRvdGFsX21hcmtzOiA0OTN9 "

我必须在python中将它转换为json。

我尝试使用 python 将以下代码转换为 json。

from base64 import urlsafe_b64decode
import json
stud_data_64="e25hbWU6IEpvaG4sIGlkOiAyMDIxTVMsIHRvdGFsX21hcmtzOiA0OTN9"
stud_data=urlsafe_b64decode(string).decode('utf-8')
stud_data_json = json.loads(stud_data)

这会导致以下错误。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.9/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.9/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

这个错误我很清楚,但我不知道如何解决它。

【问题讨论】:

  • '{name: John, id: 2021MS, total_marks: 493}' 不是有效的 JSON。你一开始是如何“jsonify”它的。
  • 我已经使用 dart 将其 jsonify。在dart中,这种格式可以很方便的转成json。
  • 显然你做得不对。显示您的代码/询问该部分 - 这就是问题的根源所在。如果它是有效的 JSON,则解析 JSON 字符串的当前代码将起作用。
  • 这是一个base 64转换的字符串data="e25hbWU6IEpvaG4sIGlkOiAyMDIxTVMsIHRvdGFsX21hcmtzOiA0OTN9"
  • 你的飞镖端代码很糟糕。导入 'dart:convert',然后执行 json.encode(stud_date) 而不是 toString()

标签: python json python-3.x flutter dart


【解决方案1】:

正如每个人都提到的那样,您那里没有有效的 json 字符串。您不这样做的原因是您没有将 dart 对象转换为 json。您只是将其转换为字符串。将您的飞镖代码更改为:

String encoded_data = base64Url.encode(utf8.encode(jsonEncode(stud_data)));

这样做会给你一个有效的 json 字符串,当它转换为 base64 时,最终会是:

eyJuYW1lIjoiSm9obiIsImlkIjoiMjAyMU1TIiwidG90YWxfbWFya3MiOjQ5M30=

【讨论】:

    猜你喜欢
    • 2017-08-11
    • 2014-04-18
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2020-11-25
    相关资源
    最近更新 更多