我有一个具有众多属性的JSON对象,我正在通过jQuery.ajax()提交给C#Web服务-看起来像这样:

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


一些属性(例如Gender和City)存储了我想映射到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?

最佳答案

看起来您需要一个KeyValuePair对象的集合,而不是一个对象(即使您的集合只有一个项目)-这就是一个Dictionary的全部,一个包含一些辅助对象的集合。

但就我个人而言,我建议您构建一个实际的类来表示您的价值观,使其更好地进行组织-稍微冗长一些,但我认为这是值得的。

// 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");

关于c# - 将JSON(jQuery)映射到KeyValuePair,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15370358/

10-08 21:34