C# c语言中的Json解析子集合#

C# c语言中的Json解析子集合#,c#,json,C#,Json,如何在C#中像下面的数据一样执行JSON { "Aliases": [ "teddy", "freddy", "eddy", "Betty" ], "Name":"reacher gilt", "Address":"100 East Way", "Age":74, "Bars": { "items": [ { "Sub_Property1":"beep",

如何在
C#
中像下面的数据一样执行
JSON

{
    "Aliases": [ "teddy", "freddy", "eddy", "Betty" ], 
    "Name":"reacher gilt", 
    "Address":"100 East Way", 
    "Age":74, 
    "Bars": { 
        "items": [ 
            {
                "Sub_Property1":"beep", 
                "Sub_Property2":"boop" 
            },
            {
                "Sub_Property1":"meep",
                "Sub_Property2":"moop"
            },
            {
                "Sub_Property1":"feep",
                "Sub_Property2":"foop"
            }
        ]
    }
}
实际上,我的问题是在子集合中。我看见有人做了什么 像这样

person.Bars.Add("items",
        new List<BarClass>(new[]{ 
        new BarClass("beep","boop"),
        new BarClass("meep","moop"),
        new BarClass("feep","foop"),
    }));
String [] no1 = {1,2,3}
String [] no2 = {4,5,6}
person.Bars.Add("items",
    new List<BarClass>(new[]{                 
    for ()
        {
           new BarClass(no1[i],no2[i])
        }      
}));
//using Newtonsoft.Json.Linq;
var jObject = JObject.Parse(jsonString);
List<Item> details = jObject["Bars"]["items"].ToObject<List<Item>>();

我该怎么做?谢谢并请帮助。

您应该创建一些类

public class Person
{
 public string Name {get;set;}    
 public string Address{get;set;}
 public int Age {get;set;}
 public Header {get;set;}
}    

public class Header
{
 public Detail[] Details {get;set;}
}

public class Detail
{
 public string Sub1 {get;set;}
 public string Sub2 {get;set;}
}
从Person类创建实例并在之后初始化为实例

JavaScriptSerializer serializer =new JavaScriptSerializer();
var result=serializer.Serialize(instanceOfPerson);

“结果”是json数据

您应该创建一些类

public class Person
{
 public string Name {get;set;}    
 public string Address{get;set;}
 public int Age {get;set;}
 public Header {get;set;}
}    

public class Header
{
 public Detail[] Details {get;set;}
}

public class Detail
{
 public string Sub1 {get;set;}
 public string Sub2 {get;set;}
}
从Person类创建实例并在之后初始化为实例

JavaScriptSerializer serializer =new JavaScriptSerializer();
var result=serializer.Serialize(instanceOfPerson);

“结果”是json数据

假设您的意思是要创建json字符串,则需要创建这些类并使用类似Newtonsoft json.net的内容:

public class Item
{
    public string Sub_Property1 { get; set; }
    public string Sub_Property2 { get; set; }
}

public class Bars
{
    public List<Item> items { get; set; }
}

public class Person
{
    public List<string> Aliases { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public int Age { get; set; }
    public Bars Bars { get; set; }
}
公共类项目
{
公共字符串Sub_Property1{get;set;}
公共字符串Sub_Property2{get;set;}
}
公共类酒吧
{
公共列表项{get;set;}
}
公共阶层人士
{
公共列表别名{get;set;}
公共字符串名称{get;set;}
公共字符串地址{get;set;}
公共整数{get;set;}
公共酒吧{get;set;}
}

请阅读此处的文档:

假设您的意思是要创建JSON字符串,则需要创建这些类并使用类似Newtonsoft JSON.net的内容:

public class Item
{
    public string Sub_Property1 { get; set; }
    public string Sub_Property2 { get; set; }
}

public class Bars
{
    public List<Item> items { get; set; }
}

public class Person
{
    public List<string> Aliases { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public int Age { get; set; }
    public Bars Bars { get; set; }
}
公共类项目
{
公共字符串Sub_Property1{get;set;}
公共字符串Sub_Property2{get;set;}
}
公共类酒吧
{
公共列表项{get;set;}
}
公共阶层人士
{
公共列表别名{get;set;}
公共字符串名称{get;set;}
公共字符串地址{get;set;}
公共整数{get;set;}
公共酒吧{get;set;}
}

请阅读此处的文档:

阅读
JSON

读取整个
JSON
的最佳方法是将它反序列化为本机
C
对象。如果您还没有使用的类,您可以在VisualStudio中创建它

  • 复制JSON文本
  • 在VS中创建新的空类文件
  • 编辑>粘贴特殊>将JSON粘贴为类
这些是课程

public class Person
{
    public string[] Aliases { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public int Age { get; set; }
    public Bars Bars { get; set; }
}

public class Bars
{
    public Item[] items { get; set; }
}

public class Item
{
    public string Sub_Property1 { get; set; }
    public string Sub_Property2 { get; set; }
}
现在可以使用一些
.netjson
library反序列化
JSON.Net
aka
newtonsoftjson
是一个很好的例子。您也可以从
NuGet
获得它

然后从
JSON

//using Newtonsoft.Json;
var jsonString = File.ReadAllText(@"C:\YourDirectory\person.json");
var person = JsonConvert.DeserializeObject<Person>(jsonString);
string[] subProperties1 = new string[] { "1", "2", "3" };
string[] subProperties2 = new string[] { "4", "5", "6" };

Person person = new Person { Name = "Johny", Age = 7, Address = "Earth", Aliases = new string[] { "Sony", "Monty" } };
person.Bars = new Bars { 
    items = subProperties1.Zip(subProperties2, 
                                (prop1, prop2) => new Item { Sub_Property1 = prop1, Sub_Property2 = prop2 })
                            .ToArray() };
var json = JsonConvert.SerializeObject(person);
来创建JSON

首先需要创建对象,然后将
序列化为
JSON

//using Newtonsoft.Json;
var jsonString = File.ReadAllText(@"C:\YourDirectory\person.json");
var person = JsonConvert.DeserializeObject<Person>(jsonString);
string[] subProperties1 = new string[] { "1", "2", "3" };
string[] subProperties2 = new string[] { "4", "5", "6" };

Person person = new Person { Name = "Johny", Age = 7, Address = "Earth", Aliases = new string[] { "Sony", "Monty" } };
person.Bars = new Bars { 
    items = subProperties1.Zip(subProperties2, 
                                (prop1, prop2) => new Item { Sub_Property1 = prop1, Sub_Property2 = prop2 })
                            .ToArray() };
var json = JsonConvert.SerializeObject(person);
为了从现有的
字符串
数组中创建
,我使用了
Linq
中的
IEnumerable.Zip
函数。你可以读到他们

这是创建的
JSON
数据

{
  "Aliases": [ "Sony", "Monty" ],
  "Name": "Johny",
  "Address": "Earth",
  "Age": 7,
  "Bars": {
    "items": [
      {
        "Sub_Property1": "1",
        "Sub_Property2": "4"
      },
      {
        "Sub_Property1": "2",
        "Sub_Property2": "5"
      },
      {
        "Sub_Property1": "3",
        "Sub_Property2": "6"
      }
    ]
  }
}

阅读
JSON

读取整个
JSON
的最佳方法是将它反序列化为本机
C
对象。如果您还没有使用的类,您可以在VisualStudio中创建它

  • 复制JSON文本
  • 在VS中创建新的空类文件
  • 编辑>粘贴特殊>将JSON粘贴为类
这些是课程

public class Person
{
    public string[] Aliases { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public int Age { get; set; }
    public Bars Bars { get; set; }
}

public class Bars
{
    public Item[] items { get; set; }
}

public class Item
{
    public string Sub_Property1 { get; set; }
    public string Sub_Property2 { get; set; }
}
现在您可以使用一些
.netjson
库进行反序列化
JSON.Net
aka
newtonsoftjson
是一个很好的例子。您也可以从
NuGet
获得它

然后从
JSON

//using Newtonsoft.Json;
var jsonString = File.ReadAllText(@"C:\YourDirectory\person.json");
var person = JsonConvert.DeserializeObject<Person>(jsonString);
string[] subProperties1 = new string[] { "1", "2", "3" };
string[] subProperties2 = new string[] { "4", "5", "6" };

Person person = new Person { Name = "Johny", Age = 7, Address = "Earth", Aliases = new string[] { "Sony", "Monty" } };
person.Bars = new Bars { 
    items = subProperties1.Zip(subProperties2, 
                                (prop1, prop2) => new Item { Sub_Property1 = prop1, Sub_Property2 = prop2 })
                            .ToArray() };
var json = JsonConvert.SerializeObject(person);
来创建JSON

首先需要创建对象,然后将
序列化为
JSON

//using Newtonsoft.Json;
var jsonString = File.ReadAllText(@"C:\YourDirectory\person.json");
var person = JsonConvert.DeserializeObject<Person>(jsonString);
string[] subProperties1 = new string[] { "1", "2", "3" };
string[] subProperties2 = new string[] { "4", "5", "6" };

Person person = new Person { Name = "Johny", Age = 7, Address = "Earth", Aliases = new string[] { "Sony", "Monty" } };
person.Bars = new Bars { 
    items = subProperties1.Zip(subProperties2, 
                                (prop1, prop2) => new Item { Sub_Property1 = prop1, Sub_Property2 = prop2 })
                            .ToArray() };
var json = JsonConvert.SerializeObject(person);
为了从现有的
字符串
数组中创建
,我使用了
Linq
中的
IEnumerable.Zip
函数。你可以读到他们

这是创建的
JSON
数据

{
  "Aliases": [ "Sony", "Monty" ],
  "Name": "Johny",
  "Address": "Earth",
  "Age": 7,
  "Bars": {
    "items": [
      {
        "Sub_Property1": "1",
        "Sub_Property2": "4"
      },
      {
        "Sub_Property1": "2",
        "Sub_Property2": "5"
      },
      {
        "Sub_Property1": "3",
        "Sub_Property2": "6"
      }
    ]
  }
}

请澄清你的问题。你在尝试什么,哪里失败了?@FelixAv“JSON是一种语言”-不,它是一种独立于语言的数据格式。@Micky不要挑剔;-)但是是的,你right@FelixAv没错。抱歉,我在等待星际争霸加载;)@米奇和费利克斯:请澄清你的问题。你在尝试什么,哪里失败了?@FelixAv“JSON是一种语言”-不,它是一种独立于语言的数据格式。@Micky不要挑剔;-)但是是的,你right@FelixAv没错。抱歉,我在等待星际争霸加载;)@米奇和费利沙夫:德赫洛·阿吉亚,请再给我一期。你好Arghya请给我另一个问题。