Json   发布时间:2019-10-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了DataContractJsonSerializer 类 操作json类型数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

将对象序列化为 JavaScript 对象表示法 (JSON),并将 JSON 数据反序列化为对象。 此类不能继承。

//  msdn 例子:

namespace SL_DataContractJsonserializer
{
public partial class Page:UserControl
{
public Page()
{
InitializeComponent();
}

// Thisusesaneventhandler,notSLdatabinding
void OnClick( object sender,EventArgsargs)
{
txtOutput1.Text
= " CreateaUserobjectandserializeit. " ;
String json = WriteFromObject();
txtOutput2.Text
= json.ToString(); Displays:{"Age":42,"Name":"Bob"}

txtOutput3.Text
= DeserializethedatatoaUserobject. String jsonString = {'Name':'Bill','Age':53} " ;
UserdeserializedUser
= ReadToObject(jsonString);
txtOutput4.Text
= deserializedUser.Name; Displays:Bill
txtOutput5.Text = deserializedUser.Age.ToString(); Displays:53
}
CreateaUserobjectandserializeittoaJSONstream. static String WriteFromObject()
{
CreateUserobject.
Useruser = new User( Bob " , 42 );

Createastreamtoserializetheobjectto.
@H_487_17@memoryStreAMMs = new @H_487_17@memoryStream();

serializertheUserobjecttothestream.
DataContractJsonserializerser = new DataContractJsonserializer( typeof (User));
ser.WriteObject(ms,user);
byte []json = @H_487_17@ms.ToArray();
ms.Close();
return Encoding.UTF8.GetString(json,128); line-height:1.5!important">0 ,json.Length);

}

DeserializeaJSONstreamtoaUserobject. static UserReadToObject( String json)
{
UserdeserializedUser
= new User();
MemoryStreAMMs
= new @H_487_17@memoryStream(Encoding.UTF8.GetBytes(json));
DataContractJsonserializerser = new DataContractJsonserializer(deserializedUser.GetType());
deserializedUser
= ser.ReadObject(ms) as User;
ms.Close();
return deserializedUser;
}

}

[DataContract]
class User
{
[DataMember]
String Name{ get ; set ;}

[DataMember]
int Age{ set ;}

public User(){}

public User( String newName, int newAgE)
{
Name
= newName;
Age
= newAge;
}

}

}


可以抽象成如下类:

public class JsonHelper
{
/// <sumMary>
生成Json格式
</sumMary> <typeparamname="T"></typeparam> <paramname="obj"></param> <returns></returns>
static String GetJson < T > (Tobj)
{
DataContractJsonserializerjson
= new DataContractJsonserializer(obj.GetType());
using (MemoryStreamstream = new @H_487_17@memoryStream())
{
json.WriteObject(stream,obj);
String szJson = Encoding.UTF8.GetString(stream.ToArray());
return szJson;
}
}
获取Json的Model
<paramname="szJson"></param> static TParseFromJson < T > ( String szJson)
{
Tobj
= Activator.CreateInstance < T > ();
using (MemoryStreAMMs = new @H_487_17@memoryStream(Encoding.UTF8.GetBytes(szJson)))
{
DataContractJsonserializerserializer = return (T)serializer.ReadObject(ms);
}
}
}
反回JSON数据到前台
<paramname="dt"> 数据表 </param> <returns> JSON字符串 </returns> String DataTableToJson(DataTabledt)
{
StringBuilderJsonString
= new StringBuilder();
if (dt != null && dt.Rows.Count > 0 )
{
JsonString.Append(
" { " );
JsonString.Append(
\ " TableInfo\ :[ " );
for ( int i = 0 ;i < dt.Rows.Count;i ++ )
{
JsonString.Append(
int j = 0 ;j < dt.columns.Count;j ++ )
{
if (j < dt.columns.Count - 1 )
{
JsonString.Append(
"" +dt.columns[j].columnName.ToString()+ " \ : " + +dt.Rows[i][j].ToString()+ , " );
}
else if (j == dt.columns.Count - "" );
}
}
if (i == dt.Rows.Count - } else
{
JsonString.Append(
},0); line-height:1.5!important">" );
}
}
JsonString.Append(
]} return JsonString.ToString();
}
else
{
return null ;
}
}

//还有一种方式操作json类型数据:

class JsonTableHelper
{
返回对象序列化
<paramname="obj"> 源对象 json数据 </returns> String ToJson( this object obj)
{
JavaScriptserializerserialize
= new JavaScriptserializer();
return serialize.serialize(obj);
}

控制深度
<paramname="recursionDepth"> 深度 object obj, int recursionDepth)
{
JavaScriptserializerserialize
= new JavaScriptserializer();
serialize.RecursionLimit
= recursionDepth;
DataTable转为json
DataTable String ToJson(DataTabledt)
{
Dictionary
< String ,255); line-height:1.5!important">object > Dic = new Dictionary < object > ();

int index = 0 ;
foreach (DataRowdr in dt.Rows)
{
Dictionary
< object > result = foreach (Datacolumndc in dt.columns)
{
result.Add(dc.columnName,dr[dc].ToString());
}
Dic.Add(index.ToString(),result);
index
++ ;
}
return ToJson(Dic);
}
}

大佬总结

以上是大佬教程为你收集整理的DataContractJsonSerializer 类 操作json类型数据全部内容,希望文章能够帮你解决DataContractJsonSerializer 类 操作json类型数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。