C#处理Json格式文件的源码演示
2021-06-27 19:07
标签:public 编译不过 资料 相关 cee framework factory 拷贝 注意 string jsonText = @"{""input"" : ""value"", ""output"" : ""result""}"; while (reader.Read()) (2)使用JsonWriter写字符串: StringWriter sw = new StringWriter(); writer.WriteStartObject(); string jsonText = sw.GetStringBuilder().ToString(); (3)使用JObject读写字符串: JObject jo = JObject.Parse(jsonText); (4)使用JsonSerializer读写对象(基于JsonWriter与JsonReader): Project p = new Project() { Input = "stone", Output = "gold" }; StringReader sr = new StringReader(@"{""Input"":""stone"", ""Output"":""gold""}"); 上面的代码都是基于下面这个Project类定义: class Project 此外,如果上面的JsonTextReader等类编译不过的话,说明是我们自己修改过的类,换成你们自己的相关类就可以了,不影响使用。3.内置方式:使用.NETFramework3.5/4.0中提供的System.Web.Script.Serialization命名空间下的JavaScriptSerializer类进行对象的序列化与反序列化,很直接。 Project p = new Project() { Input = "stone", Output = "gold" }; var p1 = serializer.Deserialize 注意:如果使用的是VS2010,则要求当前的工程的TargetFramework要改成.NetFramework4,不能使用ClientProfile。当然这个System.Web.Extensions.dll主要是Web使用的,直接在Console工程中用感觉有点浪费资源。 此外,从最后一句也可以看到,序列化与反序列化是深拷贝的一种典型的实现方式。4.契约方式:使用System.Runtime.Serialization.dll提供的DataContractJsonSerializer或者JsonReaderWriterFactory实现。 Project p = new Project() { Input = "stone", Output = "gold" }; using (MemoryStream stream = new MemoryStream()) using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText))) 这里要注意,这里的Project类和成员要加相关的Attribute: [DataContract] C#处理Json格式文件的源码演示 标签:public 编译不过 资料 相关 cee framework factory 拷贝 注意 原文地址:http://blog.51cto.com/14101311/2325829
JsonReader reader = new JsonTextReader(new StringReader(jsonText));
{
Console.WriteLine(reader.TokenType + "tt" + reader.ValueType + "tt" + reader.Value);
}
JsonWriter writer = new JsonTextWriter(sw);
writer.WritePropertyName("input");
writer.WriteValue("value");
writer.WritePropertyName("output");
writer.WriteValue("result");
writer.WriteEndObject();
writer.Flush();
Console.WriteLine(jsonText);
string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();
JsonSerializer serializer = new JsonSerializer();
StringWriter sw = new StringWriter();
serializer.Serialize(new JsonTextWriter(sw), p);
Console.WriteLine(sw.GetStringBuilder().ToString());
Project p1 = (Project)serializer.Deserialize(new JsonTextReader(sr), typeof(Project));
Console.WriteLine(p1.Input + "=>" + p1.Output);
{
public string Input { get; set; }
public string Output { get; set; }
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(p);
Console.WriteLine(json);
Console.WriteLine(p1.Input + "=>" + p1.Output);
Console.WriteLine(ReferenceEquals(p,p1));
DataContractJsonSerializer serializer = new DataContractJsonSerializer(p.GetType());
string jsonText;
{
serializer.WriteObject(stream, p);
jsonText = Encoding.UTF8.GetString(stream.ToArray());
Console.WriteLine(jsonText);
}
{
DataContractJsonSerializer serializer1 = new DataContractJsonSerializer(typeof(Project));
Project p1 = (Project)serializer1.ReadObject(ms);
Console.WriteLine(p1.Input + "=>" + p1.Output);
}
class Project
{
[DataMember]
public string Input { get; set; }
[DataMember]
public string Output { get; set; }
}
下一篇:C# 隐藏、显示鼠标指针