展示
源码
const string jsonString = "{\"name\":\"张三\",\"age\":24,\"obj\":{\"avatar\":null,\"men\":true,\"list\":[\"000\",{\"label\":\"哈哈哈哈\"},\"222\", [\"333\",{\"label\":\"Hello\"}]]}}";
GetJsonData(jsonString);
Log.Debug(TAG, "===========================================================");
const string jsonArray = "[\"000\",{\"label\":\"哈哈哈哈\"},\"222\", [\"333\",{\"label\":\"Hello\"}]]";
GetJsonData(jsonArray);
/// <summary>
/// json类型
/// </summary>
/// <param name="json">json数据</param>
/// <returns>1-JSONObject 2-JSONArray 否则0</returns>
int JsonType(string json) {
object obj = new JSONTokener(json).NextValue();
return obj switch
{
JSONObject _ => 1,
JSONArray _ => 2,
_ => 0,
};
}
private void GetJsonData(string json)
{
object obj = new JSONTokener(json).NextValue();
switch (obj)
{
case JSONObject _:
var jsonObject = new JSONObject(json);
var iterator = jsonObject.Keys();
while (iterator is { HasNext: true })
{
var key = (string)iterator.Next();
var value = jsonObject.GetString(key);
if (JsonType(value) == 0)
Log.Debug(TAG, $"【{key}: {value}】");
else
GetJsonData(value);
}
break;
case JSONArray _:
var jsonArray = new JSONArray(json);
for (var i = 0; i < jsonArray.Length(); i++)
{
var key = i;
var value = (string)jsonArray.Get(i);
if (JsonType(value) == 0)
Log.Debug(TAG, $"【[{key}]: {value}】");
else
GetJsonData(value);
}
break;
}
}