求 C# json 解析类
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 07:14:31
求 C# json 解析类
有数组应该怎样解析出来呢?
有数组应该怎样解析出来呢?
/// <summary>
/// 将对象转化城Json
/// </summary>
/// <param name="obj">对象</param>
/// <returns></returns>
public static string ToJson(object obj)
{
string output = string.Empty;
DataContractJsonSerializer dcJson = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream ms = new MemoryStream())
{
dcJson.WriteObject(ms, obj);
output = Encoding.UTF8.GetString(ms.ToArray());
}
return output;
}
/// <summary>
/// 将Json字符串转化成对象
/// </summary>
/// <param name="type">对象的类型</param>
/// <param name="output">Json字符串</param>
/// <returns></returns>
public static object ToClass(Type type, string output)
{
object result;
DataContractJsonSerializer outDs = new DataContractJsonSerializer(type);
using (MemoryStream outMs = new MemoryStream(Encoding.UTF8.GetBytes(output)))
{
result = outDs.ReadObject(outMs);
}
return result;
}
再问: 这种解析貌似不太正确吧 有数组在里面怎么处理啊
再答: 比如你的数组是 string[] 解析是这么处理
string[] s = ToClass(typeOf(string[]), json字符串);
如果是生产json 就直接
string jsonString = ToJson(你的数组);
这样就可以了
你只需要把最外层那个json类解析了。里面的数组会自动解析
再问: 请问下 这个 DataContractJsonSerializer 没找到 是在那个dll 里呢? 要引用什么呢?
再答: 这个System.Runtime.Serialization
using System.Runtime.Serialization.Json;
再问: string[] s = ToClass(typeOf(string[]), json字符串);
;typeOf(string[]), 参数1 应该填写什么呢? 都填写不正确哦
再答: string[] s = (string[])ToClass(typeof(string[]), "json字符串"); typeof 是全部小写的上面写错了
把ToClass写成这样更好用 /// <summary>
/// 将Json字符串转化成对象
/// </summary>
/// <typeparam name="T">转换的对象类型</typeparam>
/// <param name="output">json字符串</param>
/// <returns></returns>
public static T ToClass<T>(string output)
{
object result;
DataContractJsonSerializer outDs = new DataContractJsonSerializer(typeof(T));
using (MemoryStream outMs = new MemoryStream(Encoding.UTF8.GetBytes(output)))
{
result = outDs.ReadObject(outMs);
}
return (T)result;
}用法 string[] s = ToClass<string[]>("json字符串");
/// 将对象转化城Json
/// </summary>
/// <param name="obj">对象</param>
/// <returns></returns>
public static string ToJson(object obj)
{
string output = string.Empty;
DataContractJsonSerializer dcJson = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream ms = new MemoryStream())
{
dcJson.WriteObject(ms, obj);
output = Encoding.UTF8.GetString(ms.ToArray());
}
return output;
}
/// <summary>
/// 将Json字符串转化成对象
/// </summary>
/// <param name="type">对象的类型</param>
/// <param name="output">Json字符串</param>
/// <returns></returns>
public static object ToClass(Type type, string output)
{
object result;
DataContractJsonSerializer outDs = new DataContractJsonSerializer(type);
using (MemoryStream outMs = new MemoryStream(Encoding.UTF8.GetBytes(output)))
{
result = outDs.ReadObject(outMs);
}
return result;
}
再问: 这种解析貌似不太正确吧 有数组在里面怎么处理啊
再答: 比如你的数组是 string[] 解析是这么处理
string[] s = ToClass(typeOf(string[]), json字符串);
如果是生产json 就直接
string jsonString = ToJson(你的数组);
这样就可以了
你只需要把最外层那个json类解析了。里面的数组会自动解析
再问: 请问下 这个 DataContractJsonSerializer 没找到 是在那个dll 里呢? 要引用什么呢?
再答: 这个System.Runtime.Serialization
using System.Runtime.Serialization.Json;
再问: string[] s = ToClass(typeOf(string[]), json字符串);
;typeOf(string[]), 参数1 应该填写什么呢? 都填写不正确哦
再答: string[] s = (string[])ToClass(typeof(string[]), "json字符串"); typeof 是全部小写的上面写错了
把ToClass写成这样更好用 /// <summary>
/// 将Json字符串转化成对象
/// </summary>
/// <typeparam name="T">转换的对象类型</typeparam>
/// <param name="output">json字符串</param>
/// <returns></returns>
public static T ToClass<T>(string output)
{
object result;
DataContractJsonSerializer outDs = new DataContractJsonSerializer(typeof(T));
using (MemoryStream outMs = new MemoryStream(Encoding.UTF8.GetBytes(output)))
{
result = outDs.ReadObject(outMs);
}
return (T)result;
}用法 string[] s = ToClass<string[]>("json字符串");