JSON - Добавить новый тип в c# или удалить кавычки из определенного значения члена - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь удалить кавычки из определенного значения члена из JSON.

Мне нужно, чтобы JSON был:
"editor": TextAreaEditor
Not:
"editor": "TextAreaEditor"

Мне нужно уметь десериализуйте JSON в объект и сериализуйте обратно в JSON

Я в основном десериализирую приведенный ниже JSON, а затем сериализую обратно в JSON для моего c# web api.

configList = JsonConvert.DeserializeObject<List<ReportJsonDetails>>(json, settings);

Я понял

Unexpected character encountered while parsing value: T. Path
 '[0].headers[2].editor'

Я видел кучу примеров с использованием JsonConverter. Но большинство примеров манипулируют значениями, и мне не кажется, что логические значения, нули и числа реализованы таким образом.

JSON

[   {
    "name": "DataviewReport",
    "headers": [
      {
        "id": "id",
        "caption": "Id",
        "dataField": "id",
        "visible": false
      },
      {
        "id": "lastname",
        "caption": "Last Name",
        "dataField": "lastname",
        "visible": true
      },
      {
        "id": "FirstName",
        "caption": "First Name",
        "dataField": "levelNum",
        "visible": true,
        "editor": TextAreaEditor
      }
    ]   } ]

1 Ответ

0 голосов
/ 08 мая 2020
      {
        "id": "FirstName",
        "caption": "First Name",
        "dataField": "levelNum",
        "visible": true,
        "editor": TextAreaEditor
      }

Когда вы видите это представление в чем-то вроде инструментов разработки, это не JSON. Это JSON -подобное представление модели памяти среды JavaScript. TextAreaEditor - это концепция, которая существует в этой среде JavaScript, которая не универсально переводится в другие среды.

JSON предназначен для языка сериализации, который хорошо переводится в JavaScript, но это не то же самое, что сама объектная модель JavaScript. Если у вас есть JavaScript объекты, содержащие значения, которые по своей сути не сериализуемы, то они не могут быть включены в JSON и сохранят то же значение.

Trying to JSON stringify an unserializable model

Таким образом, нет (и не должно быть) способа заставить C# десериализовать значение, которое вы ему даете, потому что оно недействительно JSON. Решение вашей проблемы состоит в том, чтобы переосмыслить, какие данные вам действительно нужно передать с вашего клиента на ваш сервер, и создать уровень трансляции между этой моделью данных и той, которую ваш клиент использует напрямую: так называемый объект передачи данных. Затем сериализуйте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...