C++/RapidJSON:从用于解析的JSON字符串中删除unicode Python前缀

C++/RapidJSON: Removing unicode Python prefix from JSON string for parsing

本文关键字:字符串 JSON 删除 unicode 前缀 Python RapidJSON 用于 C++      更新时间:2023-10-16

我有一个Python web API,它返回一个带有"u"前缀的JSON,而不是标准的双引号。

我希望能够使用RapidJSON文档在C++中解析它。Parse(字符串)函数,但是Python格式阻止RapidJSON将其验证为正确的JSON。

正确格式化JSON并删除前缀以使用RapidJSON进行解析的最佳方法是什么?

以下是我想要使用RapidJSON解析的字符串,但是IsObject()断言失败(假设RapidJSON无法解析Python格式的unicode JSON字符串)。

{u'artist': u'Death Grips', u'track': u'Hunger Games', u'import_date': datetime.datetime(2015, 12, 1, 4, 6, 23), u'track_id': u'TRUCCPM1515BB84DDF-0', u'codever': u'4.12', u'length': 159, u'score': 4.8918204, u'source': u'local', u'release': u'No Love Deep Web'}

谢谢!

编辑:

事实证明,我的响应不是JSON,而是dict上的Python dict.JSON.dumps由于不受支持的类型(datetime.datetime)而失败。我使用删除了有问题的条目

del response.metadata[u'import_date'];

然后执行json.dumps(response.metadata)工作正常,并返回一个JSON。

这仍然不是一个有效的JSON。您可以使用http://jsonlint.com/或类似的工具来验证JSON。RapidJSON只能处理符合RFC7159/ECMA-404的JSON。