2009-05-23 4 views
3

У меня есть вопрос относительно библиотеки JSON.Net. Обычно у меня есть XML-строка, как это:Свойство Json.net: одно значение или массив значений

<Config> 
    .... 
    <Name>some name</Name> 
    .... 
</Config> 

Затем я использую библиотеку Json.NET, чтобы преобразовать строку в JSON строку, как это:

Congif: { 
    ... 
    Name: "some name", 
    ... 
} 

Наконец я отображающий этот JSon строку к экземпляру из Config класса:

Config instance = JsonConvert.DeserializeObject<Config>(json); 

Если свойство имя является массив имен в моем классе Config:

class Config { 
    .... 
    public string[] Name { get; set; } 
    .... 
} 

Я понимаю, что в JSON строки массив определяются следующим образом:

Name: ["some name"], 

Поскольку я получаю JSON строку, преобразованную из строки XML, я могу иметь один или несколько узлов Имени там. Это вызывает у меня проблемы, когда в XMl определено только одно Имя. Я получаю исключение, жалуясь, что он не может преобразовать строку в строку []. Это будет ОК, если в XML-файле определено несколько имен узлов.

Не уверен, есть ли какой-либо способ или вариант установки, чтобы библиотека JSON могла автоматически преобразовывать ее в массив строк, когда отображение видит целевое свойство Name - свойство типа массива, даже есть только одно значение Name?

+0

Я борюсь с той же проблемой. :-( –

ответ

1

Я думаю, что я должен принять способ JSON.Net. Если jsonString содержит строковое значение для ключа, тогда он должен преобразовать значение в строковое значение вместо массива строк, даже свойство сопоставления - это тип массива.

Что я могу сделать, так это добавить пустой узел значения в строку XML, чтобы сделать его похожим на массив узлов, если в строке XML есть только один узел, или независимо от того, добавлен ли пустой узел значения во все существующие узлы.

Единственная проблема заключается в том, что пустая запись добавляется в массив.