【问题标题】:How to convert json string into normal string?如何将json字符串转换为普通字符串?
【发布时间】:2013-01-26 18:08:15
【问题描述】:

我有一个较早的问题,我已将其删除以支持这个问题。因为我错误地认为它与 dateutil 版本有关。

test1 = dateutil.parser.parse("2013-01-24T16:50:42+00:00")  

这很好,我得到了一个日期时间。

但是

dthandler = lambda obj: obj.isoformat() if isinstance(obj, datetime.datetime) else None
test2 =  json.dumps(event.due_date_time, default=dthandler)

print test2 --> "2013-01-24T16:50:42+00:00"

这在我看来就像一个普通的字符串

test3 = dateutil.parser.parse(test2)

这会崩溃说ValueError: unknown string format

那么如何将 json 字符串转换为“普通”字符串?

【问题讨论】:

  • 为什么不发表评论就投反对票并关闭?如果问题有任何问题,我可以改进它。

标签: python json datetime python-2.7 python-dateutil


【解决方案1】:

您忘记了 JSON 在字符串周围加上引号。你有以下值:

jsonvalue = '"2013-01-24T16:50:42+00:00"'

注意那里的双引号

您需要再次使用json.loads() 方法加载该值,在这种情况下,它只是再次删除引号:

>>> print json.loads(jsonvalue)
2013-01-24T16:50:42+00:00

请注意,现在引号又消失了。如果您有混合使用,也可以使用 .strip('"') 去掉引号:

>>> print jsonvalue.strip('"')
2013-01-24T16:50:42+00:00

但既然您期待 JSON 数据,为什么不直接将其视为 json 数据并使用 json 模块将其转回 Python 数据。

【讨论】:

    【解决方案2】:

    引号是 in 字符串(打印不添加它们)。

    所以test3 = dateutil.parser.parse(test2[1:-1]) 会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 2015-10-24
      相关资源
      最近更新 更多