C#如何操作JSON数据(读取、分析)

使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后加入工程就能用。通常可以使用JObject, JsonReader, JsonWriter处理。这种方式最通用,也最灵活,可以随时修改不爽的地方。

(1)使用JsonReader读Json字符串:

string jsonText = @"{""input"" : ""value"", ""output"" : ""result""}";
JsonReader reader = new JsonTextReader(new StringReader(jsonText));

while (reader.Read())
{
    Console.WriteLine(reader.TokenType + "\t\t" + reader.ValueType + "\t\t" + reader.Value);
}

(2)使用JsonWriter写字符串:

StringWriter sw = new StringWriter();
JsonWriter writer = new JsonTextWriter(sw);

writer.WriteStartObject();
writer.WritePropertyName("input");
writer.WriteValue("value");
writer.WritePropertyName("output");
writer.WriteValue("result");
writer.WriteEndObject();
writer.Flush();

string jsonText = sw.GetStringBuilder().ToString();
Console.WriteLine(jsonText);

(3)使用JObject读写字符串:

JObject jo = JObject.Parse(jsonText);
string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();

 

(4)使用JsonSerializer读写对象(基于JsonWriter与JsonReader): 

数组型数据

string jsonArrayText1 = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]";
JArray ja = (JArray)JsonConvert.DeserializeObject(jsonArrayText1);
string ja1a = ja[1]["a"].ToString();
//或者
JObject o = (JObject)ja[1];
string oa = o["a"].ToString();

嵌套格式

string jsonText = "{\"beijing\":{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}}";
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
string zone = jo["beijing"]["zone"].ToString();
string zone_en = jo["beijing"]["zone_en"].ToString();

自定义类Project

Project p = new Project() { Input = "stone", Output = "gold" };
JsonSerializer serializer = new JsonSerializer();
StringWriter sw = new StringWriter();
serializer.Serialize(new JsonTextWriter(sw), p);
Console.WriteLine(sw.GetStringBuilder().ToString());

StringReader sr = new StringReader(@"{""Input"":""stone"", ""Output"":""gold""}");
Project p1 = (Project)serializer.Deserialize(new JsonTextReader(sr), typeof(Project));
Console.WriteLine(p1.Input + "=>" + p1.Output);

上面的代码都是基于下面这个Project类定义:

class Project
{
    public string Input { get; set; }
    public string Output { get; set; }
}

此外,如果上面的JsonTextReader等类编译不过的话,说明是我们自己修改过的类,换成你们自己的相关类就可以了,不影响使用。

 

 

 

C#中,读取JSON数据可以使用Json.NET库。以下是读取JSON数据的基本步骤: 1. 引入Json.NET库。 2. 创建一个类来存储JSON数据。 3. 使用JsonConvert.DeserializeObject方法将JSON数据转换为对象。 4. 访问对象的属性以获取数据。 在上面提供的引用中,我们可以看到一个示例,其中包含了读取JSON数据的完整代码。具体来说,我们可以看到以下步骤: 1. 在点击事件中获取JSON文件的路径。 2. 调用ReadJsonFile方法来读取JSON文件。 3. 在ReadJsonFile方法中,检查文件是否存在,如果存在则读取文件内容并将其反序列化为ReadJson对象。 4. 将ReadJson对象的属性值存储在y1_value到y9_value列表中。 5. 将y1_value到y9_value列表中的值添加到listBox1控件中。 以下是一个简单的示例代码,演示如何使用Json.NET库读取JSON数据: ``` using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; namespace JsonReaderExample { class Program { static void Main(string[] args) { string json = File.ReadAllText("example.json"); List<Person> people = JsonConvert.DeserializeObject<List<Person>>(json); foreach (Person person in people) { Console.WriteLine($"Name: {person.Name}, Age: {person.Age}"); } } } class Person { public string Name { get; set; } public int Age { get; set; } } } ``` 在这个示例中,我们首先读取名为example.jsonJSON文件的内容。然后,我们使用JsonConvert.DeserializeObject方法将JSON数据转换为Person对象的列表。最后,我们遍历列表并输出每个人的姓名和年龄。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值