C# 将RootNode复制到JSON中的ChildNode

C# 将RootNode复制到JSON中的ChildNode,c#,json,firebase-realtime-database,C#,Json,Firebase Realtime Database,我从firebase得到以下回复。我需要将自动生成的根节点复制为子节点 { "-LcjpjUB1ucnzDabnHa9": { "CustomerId": "9ff2a33e-815e-4d24-9985-2905c3460d8d", "DateTime": "4/18/2019 3:16:11 PM", "Id": "b59692a0-7fde-4132-aad7-d18a1aad690d", "OrderId": 11 }, "-Lcjs_DeDR8Q7kbu

我从firebase得到以下回复。我需要将自动生成的根节点复制为子节点

{
"-LcjpjUB1ucnzDabnHa9": {
    "CustomerId": "9ff2a33e-815e-4d24-9985-2905c3460d8d",
    "DateTime": "4/18/2019 3:16:11 PM",
    "Id": "b59692a0-7fde-4132-aad7-d18a1aad690d",
    "OrderId": 11
},
"-Lcjs_DeDR8Q7kbuAdLo": {
    "CustomerId": "9ff2a33e-815e-4d24-9985-2905c3460d8d",
    "DateTime": "4/18/2019 3:28:33 PM",
    "Id": "be676d81-fa3f-4caa-8ea3-b921a705a09a",
    "OrderId": 12
}
}
预期产量

{
"-LcjpjUB1ucnzDabnHa9": {
    "AutoId":"-LcjpjUB1ucnzDabnHa9",
    "CustomerId": "9ff2a33e-815e-4d24-9985-2905c3460d8d",
    "DateTime": "4/18/2019 3:16:11 PM",
    "Id": "b59692a0-7fde-4132-aad7-d18a1aad690d",
    "OrderId": 11
},
"-Lcjs_DeDR8Q7kbuAdLo": {
    "AutoId":"-Lcjs_DeDR8Q7kbuAdLo",
    "CustomerId": "9ff2a33e-815e-4d24-9985-2905c3460d8d",
    "DateTime": "4/18/2019 3:28:33 PM",
    "Id": "be676d81-fa3f-4caa-8ea3-b921a705a09a",
    "OrderId": 12
}
}
我使用以下命令将FireBaseResponse字符串转换为上述模型
JObject json=JObject.Parse(firebaseress.Body)


如何实现这一点?

您可以使用JObject的
Add
方法。迭代json属性并在每个节点中添加一个新属性:

var input = "{\r\n\"-LcjpjUB1ucnzDabnHa9\": {\r\n    \"CustomerId\": \"9ff2a33e-815e-4d24-9985-2905c3460d8d\",\r\n    \"DateTime\": \"4/18/2019 3:16:11 PM\",\r\n    \"Id\": \"b59692a0-7fde-4132-aad7-d18a1aad690d\",\r\n    \"OrderId\": 11\r\n},\r\n\"-Lcjs_DeDR8Q7kbuAdLo\": {\r\n    \"CustomerId\": \"9ff2a33e-815e-4d24-9985-2905c3460d8d\",\r\n    \"DateTime\": \"4/18/2019 3:28:33 PM\",\r\n    \"Id\": \"be676d81-fa3f-4caa-8ea3-b921a705a09a\",\r\n    \"OrderId\": 12\r\n}\r\n}";

var json = JObject.Parse(input);
foreach (var token in json)
{
    var jObject = (JObject) token.Value;
    jObject.Add("AutoId", new JValue(token.Key));
}

var result = json.ToString(Formatting.Indented);
1) 只需遍历解析的
JObject
的所有属性

2) 将新属性添加为
AutoID
,并将值作为父对象名添加到子对象

3) 然后按原样将此子对象指定给
JObject
中的父对象

JObject jObject = JObject.Parse(firebaseResponse.Body);

foreach (var prop in jObject.Properties())
{
    jObject[prop.Name] = JObject.FromObject(new
    {
        AutoId = prop.Name,                       //<= Child object name here
        CustomerId = prop.Value["CustomerId"],    //<= Remaining properties as it is
        DateTime = prop.Value["DateTime"],
        Id = prop.Value["Id"],
        OrderId = prop.Value["OrderId"]
    });
}

string outputJson = jObject.ToString();
JObject-JObject=JObject.Parse(firebaseress.Body);
foreach(jObject.Properties()中的var prop)
{
jObject[prop.Name]=jObject.FromObject(新
{

AutoId=prop.Name,//显示您为实现此目的所做的一些代码?以及您使用哪个库进行json操作
newtonsoft
jil
javascript序列化程序
或任何alse?