2

我有一个带有许多属性的 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?

4

1 回答 1

1

看起来您需要一个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");
于 2013-03-12T19:33:35.153 回答