РЕДАКТИРОВАТЬ: Извините, но каким-то образом я интерпретировал ваш вопрос, как если бы вы хотели сериализовать , а не десериализовать (но я все равно оставлю оригинал ниже, так какЯ думаю, что это хорошее знание :)).
Попробуйте десериализовать вашу строку JSON в Dictionary<string,string>
вместо вашей Attribute
.У меня есть предчувствие, что это может сработать.Затем вы можете настроить оставшуюся часть кода на использование этого словаря или преобразовать его в коллекцию ваших Attribute
экземпляров.
Исходный ответ (относится к сериализации ,что было противоположно тому, что вы просили) ниже.
Я так не думаю, но если намерение заключается в том, чтобы использовать его на клиенте таким образом:
attributes["color"] // returns Brown
attributes["price"] // returns 10500
..тогда то, что вам нужно, называется «ассоциативный массив», поскольку это эквивалентно следующему:
attributes.color
attributes.price
... так как на самом деле это не массив, а объект (javascript предоставляет эти два способасвойства ссылочного объекта, например, window.onload
- это то же самое, что и window["onload"]
) ...
... и вы можете добиться этого с помощью JavaScriptSerializer, если сериализовать Dictionary<string,string>
в строку JSON (другими словами,измените свой Attribute
класс на KeyValuePair<string,string>
или иным образом создайте такой словарь по-другому.