创建DTO对象解析多层嵌套Json数据



我使用API,其中响应由多层嵌套JSON表示。

{
"name": "Example",
"settings": {
"exampleOne": "value",
"exampleTwo": 100,
"exampleThree": {
"subexampleOne": "value",
"subexampleTwo": "value"
},
"arrayProperty": [
{"subexampleOne": "value"},
{"subexampleTwo": "value"}
]
}
}

Settings支持简单属性(数字、字符串等)、带有内部属性的复杂类型或属性数组。我无法预测JSON将有多少层。

如何为这样的JSON建模正确的DTO ?我应该只使用string、JObject还是完全不同的方法?

由于json是动态的,我建议使用JobjectJToken来解析json并根据JTokenType做出决定

var jsonString = File.ReadAllText("json1.json");
var jObj = JObject.Parse(jsonString);
foreach (var x in jObj)
{
string name = x.Key;
JToken value = x.Value;
if (name == "settings")
{
foreach (var y in (JObject)x.Value)
{
string name1 = y.Key;
JToken value1 = y.Value;
switch (value1.Type)
{
case JTokenType.String:
Console.WriteLine($"it is string {value1}");
break;
case JTokenType.Integer:
Console.WriteLine($"it is number {value1}");
break;
case JTokenType.Array:
Console.WriteLine($"it is array {value1}");
break;
case JTokenType.Object:
Console.WriteLine($"it is object {value1}");
break;
default:
Console.WriteLine($"type not defined {value1}");
break;
}
}
}
}

最新更新