将点表示法转换为JSON

编程入门 行业动态 更新时间:2024-10-12 03:19:45
本文介绍了将点表示法转换为JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

如何将点表示法转换为json 点表示法可以具有任何深度

How do i convert dot notation to json The dot notation can have any depth

所有数据都是这样的:

Dictionary<string, string> data = new Dictionary<string, string> { {"Company.Website", "Hjemmeside"}, {"Company.TextHeaderPlaceholder", "Firmanavn"}, {"Company.User.Manager.Repositories.CreateAsync.ArgumentNullException.InvalidCompanyId", "firma id fejl"}, {"BookingSettings.HelpText", "Hjælpe tekst på webshop"}, {"BookingSettings.OnGoingOrderValidation.Text", "Bestillings validering i gang"}, {"BookingSettings.OnGoingOrderValidation.Created", "Oprettet"}, {"BookingSettings.Url", "Kundelink til booking"} };

Json结果应该是:

Json result should be:

{ "Company": { "Website": "Hjemmeside", "TextHeaderPlaceholder": "Firmanavn", "Users": { "Managers": { "Repositories": { "CreateAsync": { "ArgumentNullException": { "InvalidCompanyId": "Can not create company user with out a company!" } } } } } }, "BookingSettings": { "HelpText": "Hjælpe tekst på webshop", "OnGoingOrderValidation": { "Text": "Bestillings validering i gang", "Created": "Oprettet" }, "URL": "Kundelink til booking" } }

这很简单吗?

推荐答案

我首先将其反序列化为嵌套字典.

I'd start by deserializing it to nested dictionaries.

public static Dictionary<string, object> DotNotationToDictionary(Dictionary<string, string> dotNotation) { Dictionary<string, object> dictionary = new Dictionary<string, object>(); foreach (var dotObject in dotNotation) { var hierarcy = dotObject.Key.Split('.'); Dictionary<string, object> bottom = dictionary; for (int i = 0; i < hierarcy.Length; i++) { var key = hierarcy[i]; if (i == hierarcy.Length - 1) // Last key { bottom.Add(key, dotObject.Value); } else { if (!bottom.ContainsKey(key)) bottom.Add(key, new Dictionary<string, object>()); bottom = (Dictionary<string, object>) bottom[key]; } } } return dictionary; }

完成后,您可以使用 JsonConvert.SerializeObject (来自Newtonsoft.Json )将字典转换为JSON:

Once that's done you can use JsonConvert.SerializeObject (from Newtonsoft.Json) to convert the dictionaries to JSON:

Dictionary<string, string> dotNotation = new Dictionary<string, string> { {"Company.Website", "Hjemmeside"}, {"Company.TextHeaderPlaceholder", "Firmanavn"}, {"Company.User.Manager.Repositories.CreateAsync.ArgumentNullException.InvalidCompanyId", "firma id fejl"}, {"BookingSettings.HelpText", "Hjælpe tekst på webshop"}, {"BookingSettings.OnGoingOrderValidation.Text", "Bestillings validering i gang"}, {"BookingSettings.OnGoingOrderValidation.Created", "Oprettet"}, {"BookingSettings.Url", "Kundelink til booking"} }; var betterDictionary = DotNotationToDictionary(dotNotation); var json = JsonConvert.SerializeObject(betterDictionary); Console.WriteLine(json);

在这里摆弄着它.

这是输出(格式化):

{ "Company": { "Website": "Hjemmeside", "TextHeaderPlaceholder": "Firmanavn", "User": { "Manager": { "Repositories": { "CreateAsync": { "ArgumentNullException": { "InvalidCompanyId": "firma id fejl" } } } } } }, "BookingSettings": { "HelpText": "Hjælpe tekst på webshop", "OnGoingOrderValidation": { "Text": "Bestillings validering i gang", "Created": "Oprettet" }, "Url": "Kundelink til booking" } }

更多推荐

将点表示法转换为JSON

本文发布于:2023-11-30 19:29:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1651233.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:转换为   JSON

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!