2015-04-17 1 views
0

Как я могу использовать DataContractJsonSerializer для анализа массива JSON, у которого нет имени исправления? Предположим, что структура JSON как это:Анализ массива JSON с использованием C# DataContractJsonSerializer

{ 
"SUMMARY": 
{ 
    "0123": 
    [ 
    { 
     "Type": "Type_A", 
     "Duration": 100 
    } 
    ] 
} 
} 

В C# я могу инициализировать два данных объектов, как показано ниже, чтобы разобрать их с помощью DataContractJsonSerializer так:

[DataContract] 
public class numberedStruct { 

    [DataMember(Name = "Type")] 
    public string Type {get; set;} 

    [DataMember(Name = "Duration")] 
    public int Duration{get; set;} 
} 

[DataContract] 
public class summaryStruct { 

    [DataMember(Name = "0123")] 
    public numberedStruct[] s; 

} 

Однако, что если «0123» также переменная, и это может быть что-то еще? Поэтому я не могу исправить имя DataMember как «0123».

Как я могу получить «0123» как переменную, а также содержимое внутри структуры на C#?

+0

Зависит, структура такая же, а место в структуре всегда одинаково для «0123»? –

+0

имена переменных не могут быть числом в C#. – ANewGuyInTown

+0

Спасибо за ваши комментарии. «0123» - всего лишь пример. На самом деле это не имя переменной, это значение переменной в реальном случае, поэтому оно может быть «abcd» или «defg». Я не уверен, как разбирать этот тип структуры, потому что он не имеет статического имени переменной. –

ответ

0

вы могли бы попытаться положить ваше странное имя переменных в словаре с [JsonExtensionData]

[JsonExtensionData] 
public Dictionary<string, object> strangeVariables { get; set; } 

это будет идти в пределах объекта Response.

+0

Hi ANewGuylnTown, спасибо за ваше предложение. Не могли бы вы дать мне код в деталях. Я попробовал структуру ниже, но он по-прежнему возвращает нулевое значение для меня. [DataContract] public class summaryStruct { [JsonExtensionData] public IDictionary s; } –

+0

спасибо. Это не работает. Мне нужно использовать функцию serialize/deserialize, предусмотренную в Newtonsoft.Json.JsonConvert, а также для ее получения. Использование .NET по умолчанию DataContractJsonSerializer не будет работать. –

 Смежные вопросы

  • Нет связанных вопросов^_^