C#学习教程:如何在C#中将json转换为扁平结构分享


如何在C#中将json转换为扁平结构

我正在尝试用C#编写函数,将JSON转换为键/值对。 它应该支持数组。 例如,以下JSON:

{ title: title_value, components: [ { component_id: id1, menu: [ {title: menu_title1}, {title: menu_title_x}, {id: menu_id1} ] }, { component_id: id2, menu: [ {title: menu_title2}, {id: menu_id2} ] } ] } 

应转换为:

这是完成这项任务的简单方法吗? 当我开始考虑数组和嵌套数组时,逻辑变得复杂。

我会查看http://json.codeplex.com/

我认为这样做是你需要的。

解决方案如下。 JavaScriptSerializer从json string(’json’)创建对象(’o’),而不是方法BuildVariablesList遍历对象并填充包含结果的字典(’additionalParameters’)。

上述就是C#学习教程:如何在C#中将json转换为扁平结构分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

  var jss = new JavaScriptSerializer(); var o = return new DynamicJsonObject(jss.Deserialize>(json)); var additionalParameters = new Dictionary(); BuildVariablesList(o.GetInternalDictionary(), "", additionalParameters); private static string AppendToPathString (string path, object part ) { return path.Trim().Length == 0 ? part.ToString() : path + '.' + part; } public static void BuildVariablesList(object obj, string path, Dictionary result) { if ( obj is ArrayList) { var arrayObj = obj as ArrayList; for (var i = 0; i) { var dictObject = obj as Dictionary; foreach (var entry in dictObject) { if (entry.Value is String && (path.Trim().Length > 0 || !ReservedFieldNames.Contains( entry.Key.ToLower()))) { result.Add(AppendToPathString(path,entry.Key), entry.Value as String); } else if (entry.Value is Dictionary) { BuildVariablesList(entry.Value as Dictionary, AppendToPathString(path, entry.Key), result); } else if (entry.Value is ArrayList) { BuildVariablesList(entry.Value as ArrayList, AppendToPathString(path, entry.Key), result); } } } } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031662.html

发表评论

邮箱地址不会被公开。 必填项已用*标注