微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何处理JSON以从字段名称中删除句点?

作为this question的后续内容,我无法弄清楚如何从JSON输入中的所有字段名称删除句点.

我正在使用Newtonsoft库将XML转换为JSON并创建一个BsonDocument插入到MongoDB数据库中,如下所示:

XmlDocument doc = new XmlDocument();
doc.Load(filePath);

String jsonText = JsonConvert.SerializeXmlNode(doc);

BsonDocument = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(jsonText);

我无法插入这个,因为我会得到一个序列化异常,因为元素名称包含一个句点.如何通过JSON字符串或BsonDocument进行处理以更改它们?

我已成功递归遍历我的文档:

private void Print(BsonDocument document)
{
    foreach (BsonElement element in document)
    {
        Console.WriteLine(element.Name);

        if (element.Value.IsBsonDocument)
        {
            Print(element.Value.AsBsonDocument);
        }
        else if (element.Value.IsBsonArray)
        {
            var array = element.Value.AsBsonArray;
            foreach (BsonDocument doc in array)
            {
                Print(doc);
            }
        }
    }
}

但是,BsonDocument.Name不是我可以设置的字段,只能获取.如何更新BsonDocument或JSON字符串以删除无效的字段名称

解决方法:

我不太了解你的XML / JSON结构,但为什么在将它转换为JSON并替换ElementNames之前不处理XML?如ANSWER所述?

XmlDocument xmlDoc = new XmlDocument();

        xmlDoc.LoadXml(File.ReadAllText(@"{path}\xml.xml", Encoding.Default));

        XmlNodeList nodeList = xmlDoc.SelectNodes("//*['.' = substring(name(), string-length(name())- string-length('.') +1)]");

        foreach (XmlNode node in nodeList)
        {

            string newName = node.Name.Replace(".", "");
            // create new (renamed) Content node
            XmlNode newNode = xmlDoc.CreateElement(newName);

            newNode.InnerXml = node.InnerXml;

            // replace existing BatteryTest node with newly renamed Content node
            node.ParentNode.InsertBefore(newNode, node);
            node.ParentNode.RemoveChild(node);
        }

        xmlDoc.Save(@"{path}\xml.xml");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐