首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取JSON文件并读取值

读取JSON文件并读取值
EN

Stack Overflow用户
提问于 2017-01-13 20:33:44
回答 2查看 2.2K关注 0票数 0

各位!我是新来的。我有这个json文件..。

代码语言:javascript
复制
{
"debug":true,
"sequence":[
  "p1"
],
"pages":[
  {
     "pageId":"p1",
     "type":"seq",
     "elements":[
        {
           "type":"smallVideo",
           "width":300,
           "height":300,
           "top":0,
           "left":0,
           "file":"xxx.mp4"
        }
     ]
  }
],
 "index":[
  {
     "width":300,
     "height":300,
     "top":0,
     "left":0,
     "goTo":"p1"
  }
]
}

这是我的简单密码..。

代码语言:javascript
复制
using Newtonsoft.Json;

JObject elements = JObject.Parse(File.ReadAllText("elements.json"));
Console.WriteLine(elements);

好的,我可以在输出屏幕上看到整个JSON文件。好吧..。但我想读任何像javascript,示例之类的值.

elements.debug (真)

elements.pages.pageId

因此,我需要根据键/路径检索值,就像Javascript中通常的那样。有线索吗?

泰!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-13 20:46:09

C#与js有点不同,这里需要声明对象。在您的示例中,您需要创建名为ElementsObj的新类,您的对象将是这个类实例:

代码语言:javascript
复制
public class ElementsObj
{
    public bool debug { get; set; }
    public List<string> sequence { get; set; }
    public List<Page> pages { get; set; }
    public List<Index> index { get; set; }
}

public class Element
{
    public string type { get; set; }
    public int width { get; set; }
    public int height { get; set; }
    public int top { get; set; }
    public int left { get; set; }
    public string file { get; set; }
}

public class Page
{
    public string pageId { get; set; }
    public string type { get; set; }
    public List<Element> elements { get; set; }
}

public class Index
{
    public int width { get; set; }
    public int height { get; set; }
    public int top { get; set; }
    public int left { get; set; }
    public string goTo { get; set; }
}

将来,使用http://json2csharp.com/从JSON文件生成类。

稍后,您可以将JSON反序列化为这个对象。我建议Newtonsoft这样做:

代码语言:javascript
复制
ElementsObj tmp = JsonConvert.DeserializeObject<ElementsObj>(jsonString);
票数 2
EN

Stack Overflow用户

发布于 2017-01-13 20:41:06

1)选项创建一个反映您的JSON结构的object

代码语言:javascript
复制
public class Element
{
    public string type { get; set; }
    public int width { get; set; }
    public int height { get; set; }
    public int top { get; set; }
    public int left { get; set; }
    public string file { get; set; }
}

public class Page
{
    public string pageId { get; set; }
    public string type { get; set; }
    public List<Element> elements { get; set; }
}

public class Index
{
    public int width { get; set; }
    public int height { get; set; }
    public int top { get; set; }
    public int left { get; set; }
    public string goTo { get; set; }
}

public class MyObject
{
    public bool debug { get; set; }
    public List<string> sequence { get; set; }
    public List<Page> pages { get; set; }
    public List<Index> index { get; set; }
}

MyObject parsed = JsonConvert.DeserializeObject<MyObject>(File.ReadAllText("elements.json"));

var debug = parsed.debug;

2)使用dynamic的选项

代码语言:javascript
复制
dynamic results = JsonConvert.DeserializeObject<dynamic>(File.ReadAllText("elements.json"));

var debug = dynamic.debug;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41643007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档