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");
点赞