将JSON(jQuery)映射到KeyValuePair

时间:2013-03-12 19:26:33

标签: c# json keyvaluepair

我有一个JSON对象,其中包含许多属性,我通过jQuery.ajax()提交给C#Web服务 - 它看起来像这样:

var obj = {};
obj.LanguageCode = 1031;
obj.Gender = { 'Geschlecht': 'Mann' };
obj.City = { 'Stadt': 'Berlin' };
...

某些属性(如“性别”和“城市”)存储我要映射到KeyValuePair的本地化/已翻译的提示和响应。我尝试以不同的方式格式化Javascript,但数据只在数据类型为Dictionary时才会出现 - 当数据类型为KeyValuePair时,它不起作用。例如:

private Dictionary Gender { get; set; } // works: Gender[0] == {[Geschlecht,Mann]}
private KeyValuePair City { get; set; } // doesn't work: City == {[,]}

如果有必要,我可以使用Dictionary,因为它可以工作,但似乎KeyValuePair更合适,更清晰。你可以将Javascript对象映射到KeyValuePairs,还是我坚持使用Dictionary?

1 个答案:

答案 0 :(得分:1)

看起来你需要一个KeyValuePair个对象的集合,而不是一个对象(即使你的集合只有一个项目) - 这就是一个字典是一个集合,周围有一些帮助。

但就个人而言,我建议建立一个实际的课程来代表你的价值观,把它组织得更好一些 - 更加冗长,但我认为这是值得的。

// C#
public class LocalAndTranslated {
    public string Localized { get;set; }
    public string Translated { get;set; }
}

// JS
obj.Gender = { Localized: "Geschlecht", Translated: "Man" };

如果你愿意,你甚至可以在javascript中定义一个“类”:

var LocalAndTranslated = (function() {
    function LocalAndTranslated(localized, translated) {
        this.Localized = localized;
        this.Translated = translated;
    }
    return LocalAndTranslated;
})();

obj.Gender = new LocalAndTranslated("Geschlecht", "Man");