【问题标题】:Method/Library in Python which is similar to NewtonSoft in C#Python中的方法/库,类似于C#中的NewtonSoft
【发布时间】:2020-07-31 23:52:02
【问题描述】:

我正在尝试在 Python 中做类似的事情,例如 NewtonSoftC# 中所做的事情。

我有以下 JSON 文件:

{
    "lead": {
        "Id": "abc",
        "CreateDate": "2020-16-04T17:55:47.229554",
        "Source": "Source"
    },
    "cars": [
        {
            "Id": 1,
            "Year": "1951",
            "Make": "Willys"
        },
        {
            "Id": 2,
            "Year": "1950"
        }
    ],
    "Client": {
        "LeadId": "ca5326c1fa14475ea6e8106c8c4a3d9d",
        "FirstName": "Christopher",
        "LastName": "Murphy"
    }
}

如果我序列化 JSON 并在 C# 中使用 NewtonSoft,那么我会得到以下结果:

"{\"lead\":{\"Id\":\"abc\",\"CreateDate\":\"2020-16-04T17:55:47.229554\",\"Source\":\"Source\"},\"cars\":[{\"Id\":1,\"Year\":\"1951\",\"Make\":\"Willys\"},{\"Id\":2,\"Year\":\"1950\"}],\"Client\":{\"LeadId\":\"ca5326c1fa14475ea6e8106c8c4a3d9d\",\"FirstName\":\"Christopher\",\"LastName\":\"Murphy\"}}"

但是 dumpdumps 方法在 Python 中给出了其他结果,是否有其他方法可以在 python 中实现相同的结果?

【问题讨论】:

  • Python 的输出有何不同?
  • 正在询问类似的问题herehere
  • 但是 dump 和 dumps 方法在 Python 中给出了其他结果 - 那么请edit 你的问题包括不起作用的代码 - 即@987654324 @.
  • 您好,欢迎来到 SO!为什么需要这种格式?如果你 100% 想要它,你可以编写 1-20 行代码来实现它;类似with open(json_fname, 'r') as f: json_lines=f.readlines(); out=''; for line in lines: out+=line

标签: python c# json


【解决方案1】:

抱歉,问题误解了。您需要的是使用替换或其他方法对序列化字符串进行转义。

此外,对象的实际值与您在使用调试工具时或根据 IDE 看到的值之间可能存在一些差异。

【讨论】:

    【解决方案2】:

    只要没有我不知道的奇怪边缘情况,您就可以这样做

    def serialize(json_fname):
      with open(json_fname, 'r') as f:
        json_lines=f.readlines()
    
      out=''
      for line in json_lines:
        out+=line
      out=out.replace(' ','')
      return out.replace('\n','')
    
    serialized=serialize('myjson.json')
    
    #  Later in the program:
    #    do(serialized)
    

    【讨论】:

    • 非常感谢这有帮助,但我的意思是当你在 C# 中使用 NewtonSoft 时,它会自动插入这个反斜杠“\”。例如 "{\"lead\":{\"Id\":\"abc\"...,你知道 Python 中有没有类似的东西?
    • 实际上,将这部分插入代码并将转储方法添加为文件后,我得到了想要的结果。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2013-01-03
    • 1970-01-01
    • 2013-08-13
    • 2012-01-28
    • 2016-03-21
    相关资源
    最近更新 更多