Сохраняйте объект JSON как строку при сериализации с помощью DataContractJsonSerializer

В настоящее время я получаю динамический ответ JSON от API, который пытаюсь проанализировать. Пример полученного JSON выглядит следующим образом:

 {
  "data": [
    {
      "Id": "XXXXXXXXXXXXXXXXXXXXXXXX",
      "IsActive": true,
      "DateCreated": "2017-11-09T00:01:49.827Z",
      "DateModified": "2017-11-09T00:01:49.827Z",
      "IsDeleted": false,
      "Uid": "XXXXXXXXXXXXXXXXXXXXXXXX",
      "CustomObject": {
        "customdata1": " Store my customdata1 value",
        "customdata2": " Store my customdata2 value"
      }
    }
  ],
  "Count": 1
}

В приведенном выше JSON при сериализации я хочу, чтобы CustomObject сопоставлялся со строкой в ​​объекте C#. Ниже приведен пример структуры объекта, которую я хочу.

[System.Runtime.Serialization.DataContract]
public class CustomObjectData
{
    [System.Runtime.Serialization.DataMember]
    public string Id { get; set; }
    [System.Runtime.Serialization.DataMember]
    public bool IsActive { get; set; }
    [System.Runtime.Serialization.DataMember]
    public string DateCreated { get; set; }
    [System.Runtime.Serialization.DataMember]
    public string DateModified { get; set; }
    [System.Runtime.Serialization.DataMember]
    public bool IsDeleted { get; set; }
    [System.Runtime.Serialization.DataMember]
    public string Uid { get; set; }
    [System.Runtime.Serialization.DataMember]
    public string CustomObject { get; set; }
}

[System.Runtime.Serialization.DataContract]
public class CustomObjectDataHolder
{
    [System.Runtime.Serialization.DataMember]
    public List<CustomObjectData> data { get; set; }
    [System.Runtime.Serialization.DataMember]
    public int Count { get; set; }
}

Я пытаюсь разработать это как плагин для CRM, поэтому я не могу использовать другие сторонние сериализаторы JSON, такие как NewtonSoft.


person Riaru Neimu    schedule 07.09.2018    source источник
comment
У вас есть доступ к полной строке ответа или потоку? Если да, можете ли вы использовать javascriptserializer, который является встроенным, а не сторонним? См., например. этот ответ на десериализовать JSON в динамический объект С#? .   -  person dbc    schedule 07.09.2018
comment
Это очень плохо. Можете ли вы получить необработанную строку ответа или поток?   -  person dbc    schedule 08.09.2018
comment
Кроме того, что вам нужно сделать с public string CustomObject { get; set; }, как только вы его получите?   -  person dbc    schedule 08.09.2018
comment
Я могу получить необработанную строку ответа, когда делаю вызов API.   -  person Riaru Neimu    schedule 08.09.2018
comment
Я буду использовать строку JSON для заполнения поля записи Dynamics CRM.   -  person Riaru Neimu    schedule 08.09.2018
comment
Похоже, ваш CustomObject может быть представлен как Dictionary<string, string>. Если это так, и вы используете .NET 4.5 или более позднюю версию, вы можете десериализовать "CustomObject" с помощью DataContractJsonSerializerSettings.UseSimpleDictionaryFormat, как показано в любым способом. чтобы заставить DataContractJsonSerializer правильно сериализовать словари? и сериализовать строку Dictionary‹string› в определенном формате.   -  person dbc    schedule 08.09.2018