我是靠谱客的博主 矮小棒球,最近开发中收集的这篇文章主要介绍c语言遍历json数组,如何使用c动态获取所有json元素?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

json.net库中的jtoken对象非常有用,您可以访问json对象和数组,而不需要一组复杂的域模型类。当我必须访问复杂对象图的一些独立属性时,我使用它。我不想为了访问几个属性而定义一大堆样板类。

当您不知道json如何或何时更改时,jtoken类型也非常有用。使类层次结构保持最新是非常痛苦的。

您可能已经有了用于反序列化json的类,您仍然可以使用jtoken作为期望json更改的属性。

对数据对象列表使用jtokens是可行的。

对于您的情况:

using Newtonsoft.Json;

using Newtonsoft.Json.Linq;

public class demo

{

[JsonProperty(PropertyName = "a1")]

public int? a1 { get; set; }

[JsonProperty(PropertyName = "a2")]

public int? a2 { get; set; }

[JsonProperty(PropertyName = "a3")]

public int? a3 { get; set; }

[JsonProperty(PropertyName = "data")]

public List data { get; set; }

}

var json = @"{

""a1"": 10,

""a2"": 11,

""a3"": 13,

""uuid"": ""1c18f0c8-02d0-425a-8dc7-13dc6d0b46af"",

""data"": [

{

""id"": 1,

""timeStamp"": ""2018-01-03T08:01:00Z"",

""quantity"": 200.0,

""tag"": ""/sometag/""

},

{

""id"": 2,

""timeStamp"": ""2018-01-03T08:05:00Z"",

""quantity"": 100.0,

""tag"": ""/someothertag/""

},

{

""id"": 3,

""name"": ""somename"",

""age"": 32

}

]

}";

var demo1 = JsonConvert.DeserializeObject(json);

// Let's get the timeStamp of item 2.

var timeStamp = demo1.data[1].SelectToken("timeStamp").ToObject();

// Let's get the age of item 3.

var age = demo1.data[2].SelectToken("age").ToObject();

你也可以使用jtoken.parse来完成整个过程,例如。

var obj1 = JToken.Parse(json);

// Get a1

var a1 = obj1.SelectToken("a1", false).ToObject();

// Get uuid

var uuid = obj1.SelectToken("uuid", false).ToObject();

// Let's get the timeStamp of item 2.

var timeStamp = obj1.SelectToken("data[1].timeStamp").ToObject();

// Let's get the age of item 3.

var age = obj1.SelectToken("data[2].age").ToObject();

调用selectToken方法时,可以传递参数errorWhenNoMatch,以指示在属性/值不存在时是否应引发错误。这允许您在json数据结构未知时编写一些非常健壮的代码。

如果要枚举/遍历属性,可以执行以下操作:

static void TraverseProperties(JToken jtoken)

{

foreach (var value in jtoken.Values())

{

if (!value.HasValues)

{

Console.WriteLine(value.Path + ": " + value.ToObject());

}

else

{

TraverseProperties(value);

}

}

}

TraverseProperties(obj1);

最后

以上就是矮小棒球为你收集整理的c语言遍历json数组,如何使用c动态获取所有json元素?的全部内容,希望文章能够帮你解决c语言遍历json数组,如何使用c动态获取所有json元素?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部