Reading JSON string as key value

I have the following json:

{ "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 } ] } 

I want to get values ​​as a pair of key values. Sort of:

 jsonObject[data][0] 

must provide the first element of the data array.

I am using JSONFx.net. But it gives strongly typed objects. I dont need it. Is there a way to parse JSON as a key value, as I mentioned earlier?

thanks

+4
source share
4 answers

Try the following:

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

If you are 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 will be the array of the first element of the data array:

Demo result

Hope this helps.

+3
source

First create classes to parse the 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 link for Newtonsoft.Json.dll

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

then you can access the values.

+1
source

If you want to do this without third-party libraries, follow these steps:

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 back.

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

 Dictionary<string, int?> data = someObject["data"] as Dictionary<string, int?>; 
+1
source

Source: https://habr.com/ru/post/1496554/


All Articles