我也遇到了一个问题。我能够将嵌套的JSON转换为键值对,但现在我想将其转换回其原始的JSON格式。由于我的问题是JSON文件是动态的,并且其结构随时间而改变,因此我无法使用C#对象模型来解决这个问题。因此,我正在寻找一种通过更新的键值对序列化和反序列化JSON的解决方案。任何帮助都将是巨大的帮助。谢谢您!
样例JSON代码:
这段代码的输出如下所示:
我希望将其转换回原始的JSON结构。
样例JSON代码:
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
},
{
"type": "mobile",
"number": "123 456-7890"
}
],
"children": [],
"spouse": null
}
var obj = JObject.Parse(json);
var result = obj.Descendants()
.OfType<JProperty>()
.Select(p => new KeyValuePair<string, object>(p.Path,
p.Value.Type == JTokenType.Array || p.Value.Type == JTokenType.Object
? null : p.Value));
foreach (var kvp in result)
Console.WriteLine(kvp);
这段代码的输出如下所示:
[firstName, John]
[lastName, Smith]
[isAlive, True]
[age, 25]
[address, ]
[address.streetAddress, 21 2nd Street]
[address.city, New York]
[address.state, NY]
[address.postalCode, 10021-3100]
[phoneNumbers, ]
[phoneNumbers[0].type, home]
[phoneNumbers[0].number, 212 555-1234]
[phoneNumbers[1].type, office]
[phoneNumbers[1].number, 646 555-4567]
[phoneNumbers[2].type, mobile]
[phoneNumbers[2].number, 123 456-7890]
[children, ]
[spouse, ]
我希望将其转换回原始的JSON结构。