Read JSON string as key value

前端 未结 4 1272
别那么骄傲
别那么骄傲 2021-02-10 14:29

I have following json:

{   
    \"serverTime\": \"2013-08-12 02:45:55,558\",
    \"data\": [
        {
            \"key1\": 1,
            \"key2\": {},
                


        
相关标签:
4条回答
  • 2021-02-10 15:03

    First create classes to parse string

    public class Key2
    {
    }
    
    public class Key3
    {
        public List<string> key4 { get; set; }
        public string key5 { get; set; }
    }
    
    public class Key9
    {
    }
    
    public class Key10
    {
        public List<string> key4 { get; set; }
        public string key9 { get; set; }
    }
    
    public class Datum
    {
        public int key1 { get; set; }
        public Key2 key2 { get; set; }
        public Key3 key3 { get; set; }
        public int key7 { get; set; }
        public int? key8 { get; set; }
        public Key9 key9 { get; set; }
        public Key10 key10 { get; set; }
        public int? key11 { get; set; }
    }
    
    public class RootObject
    {
        public string serverTime { get; set; }
        public List<Datum> data { get; set; }
    }
    

    add reference of Newtonsoft.Json.dll

    RootObject obj = JsonConvert.DeserializeObject<RootObject>(jsonData);
    

    then you can access values .

    0 讨论(0)
  • 2021-02-10 15:10

    If you want to do this without third party libraries then do:

    I would use the following code:

    var deserializer = new JavaScriptSerializer();
    var someObject = deserializer.DeserializeObject(json);
    
    string serverTime = someObject["serverTime"].ToString();
    Dictionary<string, int> data = someObject["data"] as Dictionary<string, int>;
    

    Give it a go.

    Edit: You may need to change the last line to:

    Dictionary<string, int?> data = someObject["data"] as Dictionary<string, int?>;
    
    0 讨论(0)
  • 2021-02-10 15:11

    Try this:

    using System;
    using System.IO;
    using Newtonsoft.Json;
    
    class Program
    {
        static void Main(string[] args)
        {
            var json = File.ReadAllText("input.txt");
            var a = new { serverTime = "", data = new object[] { } };
            var c = new JsonSerializer();
            dynamic jsonObject = c.Deserialize(new StringReader(json), a.GetType());
            Console.WriteLine(jsonObject.data[0]);
        }
    }
    
    0 讨论(0)
  • 2021-02-10 15:26

    If you're not averse to using Json.NET, you can do this:

    var jsonString = @"
    {   
        ""serverTime"": ""2013-08-12 02:45:55,558"",
        ""data"": [
            {
                ""key1"": 1,
                ""key2"": {},
                ""key3"": {
                    ""key4"": [
                        """"
                    ],
                    ""key5"": ""test2""
                },
                ""key7"": 0
            },
            {
                ""key8"": 1,
                ""key9"": {},
                ""key10"": {
                    ""key4"": [
                        """"
                    ],
                    ""key9"": ""test2""
                },
                ""key11"": 0
            }
        ] 
    }";
    
    var jsonResult = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(jsonString);
    var firstItem = jsonResult["data"][0];
    

    firstItem would be an array of the first item in the data array:

    Demo result

    Hope this helps.

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