C# 如何使用C获取json的项值?
如何使用C获取json的项值 json: 上面提到的一个是json,这里的titie值将在一个列表中获得 请帮帮我 我的代码是:C# 如何使用C获取json的项值?,c#,json,json.net,C#,Json,Json.net,如何使用C获取json的项值 json: 上面提到的一个是json,这里的titie值将在一个列表中获得 请帮帮我 我的代码是: string dashletsConfigPath = Url.Content("~/Content/Dashlets/Dashlets.json"); string jArray = System.IO.File.ReadAllText(Server.MapPath(dashletsConfigPath)); List<string> lists = n
string dashletsConfigPath = Url.Content("~/Content/Dashlets/Dashlets.json");
string jArray = System.IO.File.ReadAllText(Server.MapPath(dashletsConfigPath));
List<string> lists = new List<string>();
JArray list = JArray.Parse(jArray);
var ll = list.Select(j => j["fd"]).ToList();
在这里,json将被转换成JArray
li获得了fd详细信息,然后我们在列表中获得了详细信息我建议为您的对象创建一个类,并使用DataContractSerializer反序列化JSON字符串
[DataContract]
public class Container
{
[DataMember(Name="ID")]
public string ID { get; set; }
[DataMember(Name="fd")]
public Graph[] fd { get; set; }
}
[DataContract]
public class Graph
{
[DataMember(Name="title")]
public string Title { get; set; }
[DataMember(Name="type")]
public string Type { get; set; }
}
等等
这将为您的JSON提供强类型类。我不确定您打算如何使用这些数据,但您可以从您的对象收集所有titie值,如下所示:
var arr = JArray.Parse(json);
var query =
from JObject obj in arr
from JObject fd in obj["fd"]
select new
{
Id = (string)obj["ID"],
Titie = (string)fd["titie"],
};
public class Item
{
public string ID { get; set; }
public List<FD> fd { get; set; }
}
public class FD
{
public string titie { get; set; }
public string type { get; set; }
public Views views { get; set; }
}
public class Views
{
public Graph graph { get; set; }
}
public class Graph
{
public bool show { get; set; }
public State state { get; set; }
}
public class State
{
public string group { get; set; }
public string[] series { get; set; }
public string graphType { get; set; }
}
class Program
{
static void Main(string[] args)
{
string json = @"..."; //your json string
var Items = JsonConvert.DeserializeObject<List<Item>>(json);
List<string> tities = new List<string>();
foreach (var Item in Items)
{
foreach (var fd in Item.fd)
{
tities.Add(fd.titie);
}
}
}
}
如果您只是想要一个titie sic属性值的列表,这应该可以使用:
这假设您发布的JSON通过引用属性名变得有效。您可以使用以下方式反序列化JSON字符串:
var arr = JArray.Parse(json);
var query =
from JObject obj in arr
from JObject fd in obj["fd"]
select new
{
Id = (string)obj["ID"],
Titie = (string)fd["titie"],
};
public class Item
{
public string ID { get; set; }
public List<FD> fd { get; set; }
}
public class FD
{
public string titie { get; set; }
public string type { get; set; }
public Views views { get; set; }
}
public class Views
{
public Graph graph { get; set; }
}
public class Graph
{
public bool show { get; set; }
public State state { get; set; }
}
public class State
{
public string group { get; set; }
public string[] series { get; set; }
public string graphType { get; set; }
}
class Program
{
static void Main(string[] args)
{
string json = @"..."; //your json string
var Items = JsonConvert.DeserializeObject<List<Item>>(json);
List<string> tities = new List<string>();
foreach (var Item in Items)
{
foreach (var fd in Item.fd)
{
tities.Add(fd.titie);
}
}
}
}
首先,json格式无效。获取下面的有效json [{ 身份证号码:6512, fd:[{ titie:Graph-01, 类型:图形, 观点:{ 图表:{ 秀:没错, 声明:{ 组别:分区名称,, 系列:[现场重量、工厂重量、方差], 图形类型:线和点 } } } }, { titie:Graph-02, 类型:图形, 观点:{ 图表:{ 秀:没错, 声明:{ 组别:分区名称,, 系列:[现场重量、工厂重量、方差], 图形类型:线和点 } } } }] }, { 身份证号码:6506, fd:[{ titie:Map-01, 类型:地图, 观点:{ 地图:{ 秀:没错, 声明:{ kpiField:P_BudgetAmount, kpiSlabs:[{ id:P_BudgetAmount, 色调:[0fff03,eb0707], 等级:10 }] } } } }] }] 如果您想将项目作为单独的字符串读取,请使用以下代码
JArray jObject = JArray.Parse(json);
var ll = jObject.ToList();
您可以使用Newtonsoft Json库 使用下面的模型对象反序列化json字符串
public class JsonWrapper
{
public string ID { get; set; }
public List<Fd> fd { get; set; }
}
public class Fd
{
public string titie { get; set; }
public string type { get; set; }
public Views views { get; set; }
}
public class Views
{
public Graph graph { get; set; }
}
public class Graph
{
public bool show { get; set; }
public State state { get; set; }
}
public class State
{
public string group { get; set; }
public List<string> series { get; set; }
public string graphType { get; set; }
}
然后您可以从jsonWrapper对象访问所有列表和属性。您使用的是类似json.net的库吗?你试过什么?我想这篇文章会对你有所帮助,但这不是有效的JSON。属性名称应该用双引号@Seminda包装,请帮助我。我的代码如上所述。是否要将json中的两项作为字符串列表分开?或者你想要它作为一个目标列表,我有一些疑问如何在列表中获取Titie值。
JsonWrapper jsonWrapper = new JsonWrapper();
jsonWrapper = (JsonWrapper)JsonConvert.DeserializeObject(jsonString, jsonWrapper.getType());