Read JSON string as key value

限于喜欢 提交于 2019-12-03 08:37:12

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]);
    }
}

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:

Hope this helps.

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 .

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?>;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!