0 c# json converters
如何将点表示法转换为 json
\n点表示法可以有任何深度
所有数据都是最新的,如下所示:
\n\nDictionary<string, string> data = new Dictionary<string, string>\n{\n {"Company.Website", "Hjemmeside"},\n {"Company.TextHeaderPlaceholder", "Firmanavn"},\n {"Company.User.Manager.Repositories.CreateAsync.ArgumentNullException.InvalidCompanyId", "firma id fejl"},\n {"BookingSettings.HelpText", "Hj\xc3\xa6lpe tekst p\xc3\xa5 webshop"},\n {"BookingSettings.OnGoingOrderValidation.Text", "Bestillings validering i gang"},\n {"BookingSettings.OnGoingOrderValidation.Created", "Oprettet"},\n {"BookingSettings.Url", "Kundelink til booking"}\n};\nRun Code Online (Sandbox Code Playgroud)\n\nJson 结果应该是:
\n\n{\n "Company": {\n "Website": "Hjemmeside",\n "TextHeaderPlaceholder": "Firmanavn",\n "Users": {\n "Managers": {\n "Repositories": {\n "CreateAsync": {\n "ArgumentNullException": {\n "InvalidCompanyId": "Can not create company user with out a company!"\n }\n }\n }\n }\n }\n },\n "BookingSettings": {\n "HelpText": "Hj\xc3\xa6lpe tekst p\xc3\xa5 webshop",\n "OnGoingOrderValidation": {\n "Text": "Bestillings validering i gang",\n "Created": "Oprettet"\n },\n "URL": "Kundelink til booking"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n如何用简单的方法做到这一点?
\nMik*_*der 12
我首先将其反序列化为嵌套字典。
\npublic static Dictionary<string, object> DotNotationToDictionary(Dictionary<string, string> dotNotation)\n{\n Dictionary<string, object> root = new Dictionary<string, object>();\n\n foreach (var dotObject in dotNotation)\n {\n var hierarcy = dotObject.Key.Split(\'.\');\n\n Dictionary<string, object> current = root;\n\n for (int i = 0; i < hierarcy.Length; i++)\n {\n var key = hierarcy[i];\n\n if (i == hierarcy.Length - 1) // Last key\n {\n current.Add(key, dotObject.Value);\n }\n else \n {\n if (!current.ContainsKey(key))\n current.Add(key, new Dictionary<string, object>());\n \n current = (Dictionary<string, object>) current[key];\n }\n }\n }\n\n return root;\n}\nRun Code Online (Sandbox Code Playgroud)\n完成后,您可以使用JsonSerializer.Serialize将字典转换为 JSON(JavaScriptEncoder.UnsafeRelaxedJsonEscaping“\xc3\xa6”所需):
Dictionary<string, string> dotNotation = new Dictionary<string, string>\n{\n {"Company.Website", "Hjemmeside"},\n {"Company.TextHeaderPlaceholder", "Firmanavn"},\n {"Company.User.Manager.Repositories.CreateAsync.ArgumentNullException.InvalidCompanyId", "firma id fejl"},\n {"BookingSettings.HelpText", "Hj\xc3\xa6lpe tekst p\xc3\xa5 webshop"},\n {"BookingSettings.OnGoingOrderValidation.Text", "Bestillings validering i gang"},\n {"BookingSettings.OnGoingOrderValidation.Created", "Oprettet"},\n {"BookingSettings.Url", "Kundelink til booking"}\n};\n\nvar betterDictionary = DotNotationToDictionary(dotNotation);\n\nvar json = JsonSerializer.Serialize(betterDictionary, new JsonSerializerOptions { WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping });\n\nConsole.WriteLine(json);\nRun Code Online (Sandbox Code Playgroud)\n\n这是输出:
\n{\n "Company": {\n "Website": "Hjemmeside",\n "TextHeaderPlaceholder": "Firmanavn",\n "User": {\n "Manager": {\n "Repositories": {\n "CreateAsync": {\n "ArgumentNullException": {\n "InvalidCompanyId": "firma id fejl"\n }\n }\n }\n }\n }\n },\n "BookingSettings": {\n "HelpText": "Hj\xc3\xa6lpe tekst p\xc3\xa5 webshop",\n "OnGoingOrderValidation": {\n "Text": "Bestillings validering i gang",\n "Created": "Oprettet"\n },\n "Url": "Kundelink til booking"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1940 次 |
| 最近记录: |