Can I LINQ a JSON?

前端 未结 3 443
谎友^
谎友^ 2020-11-29 04:28

This is the JSON I get from a request on .NET:

{
  \"id\": \"110355660738\", 
  \"picture\": {
    \"data\": {
      \"url\": \"https://fbcdn-profile-a.akama         


        
相关标签:
3条回答
  • 2020-11-29 04:55

    No need for Linq, just use dynamic (using Json.Net)

    dynamic obj = JObject.Parse(json);
    Console.WriteLine((string)obj.picture.data.url);
    

    Linq version would not be much readable

    JObject jObj = JObject.Parse(json);
    var url = (string)jObj.Descendants()
                        .OfType<JProperty>()
                        .Where(p => p.Name == "url")
                        .First()
                        .Value;
    

    Documentation: LINQ to JSON

    0 讨论(0)
  • 2020-11-29 04:57

    I would not recommend LINQ. I would recommend a JSON library such as newtonsoft.json.

    So you can do this:

    string json = @"{
      ""Name"": ""Apple"",
      ""Expiry"": "2008-12-28T00:00:00",
      ""Price"": 3.99,
      ""Sizes"": [
        ""Small"",
        ""Medium"",
        ""Large""
      ]
    }";
    
    JObject o = JObject.Parse(json);
    
    string name = (string)o["Name"];
    
    // Apple
    JArray sizes = (JArray)o["Sizes"];
    string smallest = (string)sizes[0];
    
    // Small
    

    Note:- this code has been copied from the samples present on the project site http://james.newtonking.com/pages/json-net.aspx

    0 讨论(0)
  • 2020-11-29 05:09

    In a bind you could always deserialize the JSON and serialize it to XML, and load the XML in a XDocument. Then you can use the classic Linq to XML. When you are done take the XML, deserialize it, and serialize it back to JSON to JSON. We used this technique to add JSON support to an application that was originally built for XML, it allowed near-zero modifications to get up and running.

    0 讨论(0)
提交回复
热议问题