DataContractJsonSerializer или JsonTextWriter для массивов - PullRequest
1 голос
/ 20 августа 2010

Я бы предпочел использовать Microsofts System.Runtime.Serialization.Json.DataContractJsonSerializer сериализовать мои объекты в JSON, чтобы мне не приходилось ссылаться на какие-либо сторонние сборки.

Я пытаюсь сериализовать массивы в строку JSON. Там может быть только 1 массив, где каждая другая запись является именем, а другая - значением. например [ "name1", "value1", "name2", "value2" ]

Я хочу сериализовать, чтобы имя и значение появлялись в строке JSON. например массив в .NET равен [ "name1", "value1", "name2", "value2" ] становится

{
 "name1": "value1",
 "name2": "value2" 
}

Я успешно достиг этого с помощью JSON.NET JsonTextWriter, просматривая 2 массива и добавляя к ним затем

jsonWriter.WritePropertyName(namesAndValues[i].ToString());
jsonWriter.WriteValue(namesAndValues[i+1]);

Я пытаюсь сделать то же самое с Microsoft DataContractJsonSerializer, но, похоже, он не обладает такой же гибкостью. Есть какой-то способ?

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

1 Ответ

2 голосов
/ 20 августа 2010

DataContractJsonSerializer предназначен для сериализации классов в JSON.Чтобы получить желаемый тип выходных данных, вам нужно сериализовать класс с двумя свойствами с именами name1 и name2, которые имеют значения value1 и value2.Является ли формат JSON полностью фиксированным, если вы просто хотите получить набор пар ключ-значение, вы можете обрезать свой массив в Dictionary<string,string> и сериализовать его, используя DataContractJsonSerializer.Однако вы получите что-то вроде:

{
    {
    "Key":"name1",
    "Value":"value1"
    },
    {
    "Key":"name2",
    "Value":"value2"
    }
}

Т.е. массив пар ключ-значение.

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