Parse and Extract Attributes from JSON

后端 未结 3 2028
终归单人心
终归单人心 2021-01-24 05:16

I have a large JSON file similar to this:

{
   \"data\":[
      {
         \"attribution\":null,
         \"tags\":[
            \"thenight2\"
         ],
               


        
相关标签:
3条回答
  • 2021-01-24 05:56

    You can use the Linq features of JSON.net, along with the select token method to get at the data you are looking for:

    String fileContents = System.IO.File.ReadAllText("Z:\\temp\\test.json");
    Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(fileContents);
    IList<string> urls = obj["data"].Select(m => (string)m.SelectToken("images.standard_resolution.url")).ToList();
    
    0 讨论(0)
  • 2021-01-24 06:03

    I have used the JSON class in System.Web.Helpers Namespace (.Net 4.0) previously and it works well for me. You are able to refer to arrays dynamically. It should be used similarly to this:

    dynamic myJson = Json.Decode(myJsonString);
    foreach (var url in myJson.data.images.standard_resolution){
    //DO SOMETHING
    }
    
    0 讨论(0)
  • 2021-01-24 06:04

    Add reference

    using System.IO;
    using System.Text;
    using System.Runtime.Serialization.Json;
    

    Make a string variable using JSON

    string json = "{\"data\":[{\"attribution\":null,\"tags\":[\"thenight2\"],\"type\":\"image\",\"images\":{\"standard_resolution\":{\"url\":\"http://distilleryimage3.s3.amazonaws.com/59d6984092a211e392db12e25f465f4f_8.jpg\","+
    
                   "\"width\":640,\"height\":640}}},{\"attribution\":null,\"tags\":[\"thenight2\"],\"type\":\"image\",\"images\":{\"low_resolution\":{"+
                  "\"url\":\"http://distilleryimage1.s3.amazonaws.com/c179b34a91ff11e3b99c0aa73e1070c5_6.jpg\",\"width\":306,\"height\":306},\"thumbnail\":{\"url\":\"http://distilleryimage1.s3.amazonaws.com/c179b34a91ff11e3b99c0aa73e1070c5_5.jpg\","+
                   "\"width\":150,\"height\":150},\"standard_resolution\":{ \"url\":\"http://distilleryimage1.s3.amazonaws.com/c179b34a91ff11e3b99c0aa73e1070c5_8.jpg\",\"width\":640,\"height\":640"+
                "}},\"users_in_photo\":[]}    ]}";
    

    Create a method inside the class in which conversion takes place.

    public static T Deserialize<T>(string json) where T : new()
            {
                using (MemoryStream memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
                {
                    var serializer = new DataContractJsonSerializer(typeof(T));
                    return (T)serializer.ReadObject(memoryStream);
                }
            }
    

    Add these classes below the class having conversion

    public class Data
        {
            public Users[] users { get; set; }
        }
    
        public class Users
        {
            public Image image { get; set; }
        }
    
        public class Image
        {
            public StandardUrl standardUrl { get; set; }
        }
    
        public class StandardUrl
        {
            public string url { get; set; }
        }
    

    Place this code where you need conversion

    var dataObj = Deserialize<List<Data>>(json);
    

    Use foreach to loop across the variable dataObj.

    Example Parsing JSON object containing an array with Windows Phone 7

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