如何在JSON
C#
中执行以下数据?
{
"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"),
}));
所以,我必须添加new BarClass("beep","boop")
,但我需要做点什么
像这样
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])
}
}));
我该怎么做?谢谢,请帮助..
答案 0 :(得分:1)
你应该创建一些类
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);
&#34;导致&#34;是json数据
答案 1 :(得分:1)
假设您想要创建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; }
}
请阅读此处的文档:http://www.newtonsoft.com/json/help/html/Introduction.htm
答案 2 :(得分:1)
阅读JSON
阅读整个JSON
的最佳方式是Deserialize
它与原生C#
对象。如果您还没有自己的类,则可以在Visual Studio中将其创建为
- 复制您的JSON文字
- 在VS
中创建一个新的空类文件- 编辑&gt;选择性粘贴&gt;将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; }
}
现在您可以使用一些.NET JSON
库进行反序列化。 JSON.Net
又名Newtonsoft JSON
是一个很棒的library。你也可以从NuGet
得到它。
然后从C#
JSON
对象非常容易
//using Newtonsoft.Json;
var jsonString = File.ReadAllText(@"C:\YourDirectory\person.json");
var person = JsonConvert.DeserializeObject<Person>(jsonString);
如果您只想阅读子集,可以使用Linq-to-JSON直接阅读items
,就像这样
//using Newtonsoft.Json.Linq;
var jObject = JObject.Parse(jsonString);
List<Item> details = jObject["Bars"]["items"].ToObject<List<Item>>();
创建JSON
首先需要创建对象,然后Serialize
到JSON
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);
要从现有的items
数组中创建string
,我使用了IEnumerable.Zip
中的Linq
函数。您可以阅读here。
这是创建的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"
}
]
}
}