我有一个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?
答案 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");