Метод / Библиотека в Python, которая похожа на NewtonSoft в C# - PullRequest
1 голос
/ 18 апреля 2020

Я пытаюсь сделать нечто подобное в Python, как NewtonSoft делает в C#.

У меня есть следующий файл 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 и использую NewtonSoft в C#, затем получаю следующий результат:

"{\"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\"}}"

Но методы dump и dumps дают другие результаты в Python, Есть ли другой способ добиться того же результата в python?

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Извините, неправильно понял вопрос. Вам нужно экранировать сериализованную строку с помощью replace или другого метода.

Кроме того, могут быть некоторые различия между реальным значением объекта и значением, которое вы видите при использовании средств отладки или в зависимости от IDE.

0 голосов
/ 18 апреля 2020

Пока нет странных крайних случаев, о которых я не знаю, вы могли бы сделать что-то вроде этого

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...