首页 > 解决方案 > 如何通过删除 C# 中的键来制作平面对象?

问题描述

我真的不确定这是否可以实现,如何删除对象中的一些嵌套键并使对象非常平坦。我有一个动态对象如下,

EventData": { "ChangeSet": { "Change": { "changes": [ ] } } }

我想将以上内容更改为

事件数据”:{ [] }

这可以在 C# 中实现吗?

标签: c#dynamicreflection

解决方案


使用 NewtonSoft.JSon 包。下面的代码可以解决问题。我把它做成了一个字符串数组,因为我不知道你需要什么,但你可以根据自己的喜好进行更改。

const string complex = "{\"EventData\": { \"ChangeSet\": { \"Change\": { \"changes\" : [ ]}}}}";

调用方法:

string simple = returnSimpleObject(complex);


        public class SerializeData
        {
             public string[] EventData { get; set; }
        }

        private static string returnSimpleObject(string Json)
        {
            JObject jobject = JObject.Parse(Json);

            JToken tEventData = jobject.SelectToken("EventData");
            SerializeData myEvent = tEventData.ToObject<SerializeData>();

            JToken tchanges = jobject.SelectToken("EventData.ChangeSet.Change.changes");
            myEvent.EventData = tchanges.ToObject<string[]>();


            JsonSerializer serializer = new JsonSerializer();
            StringWriter strWrite = new StringWriter();
            JsonWriter myWriter = new JsonTextWriter(strWrite);
            serializer.Serialize(myWriter, myEvent);
            return strWrite.ToString();

        }

推荐阅读