Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用C获取json的项值?_C#_Json_Json.net - Fatal编程技术网

C# 如何使用C获取json的项值?

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

如何使用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 = 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());