C# Newtonsoft.Json之LINQ To Json實例


Querying JSON with LINQ 解析獲取json 字符串中的內容,對於單級的可以,對於多級的時候建議使用下一種方式

//Querying with LINQ  
string json = @"{  
    school:{  
    name:'實驗高中',  
    students:[  
        {name:'張三',age:18},  
        {name:'李四',age:19}  
    ],  
    sites:['濟南','聊城']  
    }  
}";  
JObject o = JObject.Parse(json);  
string schname = (string)o["school"]["name"];  
Console.WriteLine(schname); //實驗高中  
string stuname = (string)o["school"]["students"][1]["name"];  
Console.WriteLine(stuname);//李四  
JArray sites = (JArray)o["school"]["sites"];  
foreach (var item in sites)  
{  
    Console.WriteLine(item); //濟南  //聊城  
}  
IList<string> siteList = sites.Select(q => (string)q).ToList();  
Console.WriteLine(sites.Count);//2 

  Querying JSON width SelectToken 使用SelectToken 方式獲取json 字符串中的內容(比較推薦的方式)

//  Querying JSON with SelectToken  
string json = @"{  
    school:{  
    name:'實驗高中',  
    students:[  
        {name:'張三',age:18},  
        {name:'李四',age:19}  
    ],  
    sites:['濟南','聊城']  
    }  
}";  
JObject o = JObject.Parse(json);  
//SelectToken 方法使用  
string schname = (string)o.SelectToken("school.name");  
Console.WriteLine(schname); //實驗高中  
string stuname = (string)o.SelectToken("school.students[1].name");  
Console.WriteLine(stuname); //李四  
//SelectToken with JSONPath  
JToken stu1 = o.SelectToken("$.school.students[?(@.name=='張三')]");  
Console.WriteLine(stu1); //{"name": "張三","age": 18}  
Console.WriteLine(stu1["age"]); //18  
IEnumerable<JToken> stus = o.SelectTokens("$..students[?(@.age>15)]");  
foreach (var item in stus)  
{  
    Console.WriteLine(item); //{"name": "張三",   "age": 18 }    
                                //{ "name": "李四",   "age": 19}  
}  
//SelectToken with LINQ  
// $...name  意思是從當前接口文檔的1,2,3級中查找name,並返回結果  
IList<string> names = o.SelectTokens("$...name").Select(q => (string)q).ToList();  
Console.WriteLine(string.Join(",",names)); //實驗高中,張三,李四

  轉自:https://blog.csdn.net/qq_23018459/article/details/79801306


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM