Разбор неизвестного JSON с помощью JavascriptSerializer в C # - PullRequest
3 голосов
/ 31 января 2012

Как я могу использовать JavaScriptSerializer для анализа неизвестного динамического JSON.В частности, я пишу свою собственную оболочку для API Календаря Google.У события есть объект extendedProperties, который содержит как частный объект, так и общий объект, содержащий неизвестный набор свойств:

"extendedProperties": {
    "private": {
        "UnknownKey1": "UnknownValue1",
        "UnknownKey2": "UnknownValue2",
        "UnknownKey3": "UnknownValue3"
    },
    "shared": {
        "UnknownKey1": "UnknownValue1",
        "UnknownKey2": "UnknownValue2",
        "UnknownKey3": "UnknownValue3"
    }
}

Я хочу создать такой класс для JavaScriptSerializer:

public class ExtendedProperties
{
    public ??? @private { get; set; }
    public ??? shared { get; set; }
}

Конечно, есть проблемы.

(1) Сериализатор понимает амперсанд, поэтому он будет анализировать свойство 'private'?

(2) Каким будет тип возвращаемого значения длясвойства, которые JavaScriptSerializer может читать / писать?Какой-то словарь?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 31 января 2012
var serializer = new JavaScriptSerializer();
var jsonObject = serializer.Deserialize<IDictionary<string, object>>(jsonStr);

Я использовал этот код для десериализации неизвестных объектов json.

0 голосов
/ 31 января 2012

Парсер понимает символ @. Вы можете использовать dynamic в качестве типа, если вы используете .net 4. Вы можете попробовать Dictionary<string,string>, хотя у меня всегда были проблемы с сериализацией и десериализацией словарей для одного и того же ссылочного объекта. List<KeyValuePair<string, string>> обычно делает свое дело.

...