【问题标题】:Can I remove double quotes from keys in this json but not the values?我可以从这个json中的键中删除双引号而不是值吗?
【发布时间】:2021-10-12 15:52:21
【问题描述】:

我有以下 json 字符串:

'{"start_time": {"_gte": "2021-10-10 19:00:00"}, "end_time": {"_gte": "2021-10-10 19:30:00"}}'

我需要得到:

'{start_time: {_gte: "2021-10-10 19:00:00"}, end_time: {_gte: "2021-10-10 19:30:00"}}'

这可能吗?

【问题讨论】:

  • 我不知道您为什么需要该字符串,但第一步是将 JSON 解码为 Python dict。完成后,您可以使用 dict 的键和值构造所需的字符串。
  • 明天,您或您的同事将发布一个问题,询问如何解析后一个字符串。
  • @chepner 谢谢,我需要它,因为 json 字符串变成了 graphql 查询,需要在时间戳周围加双引号
  • @don'ttalkjustcode 粗鲁:)
  • @fourloops 你最好从数据结构生成正确的 GraphQL 查询,而不是直接将 JSON 作为纯字符串操作。

标签: python json


【解决方案1】:

我想这样的事情应该可行:

import json
from typing import List, Tuple, Any


string = '{"start_time": {"_gte": "2021-10-10 19:00:00"}, "end_time": {"_gte": "2021-10-10 19:30:00"}}'


class MyDict(dict):
    def __repr__(self):
        return '{' + ', '.join([f'{k}: {v!r}' for k, v in self.items()]) + '}'


def hook_fn(value: List[Tuple[str, Any]]):
    return MyDict(value)


print(json.loads(string, object_pairs_hook=hook_fn))

打印出来:

{start_time: {_gte: '2021-10-10 19:00:00'}, end_time: {_gte: '2021-10-10 19:30:00'}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2015-07-15
    • 2020-01-11
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多