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
akanewtonsoftjson
是一个很好的例子。您也可以从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
akanewtonsoftjson
是一个很好的例子。您也可以从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请给我另一个问题。