c# - 将 JSON (jQuery) 映射到 KeyValuePair

标签 c# json keyvaluepair

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

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

一些属性,如性别和城市,存储我想映射到键值对的本地化/翻译提示和响应。我试过以不同的方式格式化 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,还是我坚持使用字典?

最佳答案

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

但就我个人而言,我建议构建一个实际的类来代表您的值(value)观,更好地组织它 - 更冗长一点,但我认为这是值得的。

// 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/

相关文章:

c# - 如何禁用消息 "You may only use the Microsoft .NET Core Debugger..."?

C# 图像识别性能——比较图像列表和图像字典

c# - Entity Framework Core DbContext.SaveChanges 抛出 System.InvalidCastException : Unable to cast object of type System. bool 值以键入 System.Int16

javascript - 未捕获的类型错误 : Cannot use 'in' operator to search for '123' in

c# - 在 ASP.NET MVC5 Web 应用程序中向用户帐户添加声明的正确方法

json - Flutter/Dart 错误 - NoSuchMethodError : Class '_InternalLinkedHashMap<String, dynamic>' has no instance method 'map' with matching arguments

json - typescript :导入导入json文件的js库

if 语句的 Python 问题

c# - 将 List<KeyValuePair> 绑定(bind)到组合框

c# - 将对象转换为 KeyValuePair