JSON

c#和Javascript操作同一json对象的实现代码

字号+ 作者:H5之家 来源:H5之家 2017-04-11 11:00 我要评论( )

牛图库(niutuku.com)素材网提供json,等设计素材免费下载。

能否让客户端和服务端操作同一json对象呢?目前想到的方式是通过客户端隐藏控件来实现。
以下是一个泛型列表对象 List<TrainingImplement> ,转为json后,客户端和服务端如何操作
1、json对象与C#泛型相互转换代码

复制代码 代码如下:


//将json数据转换为泛型
public static T ConvertByteDataToObject<T>(string byteData)
{
T obj;
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(byteData)))
{
var serializer = new DataContractJsonSerializer(typeof(T));
obj = (T)serializer.ReadObject(ms);
}
return obj;
}
//将泛型转换为json
public static string ConvertObjectToByteData<T>(T obj)
{
string result;
using (var ms = new MemoryStream())
{
var serializer = new DataContractJsonSerializer(typeof(T));
serializer.WriteObject(ms, obj);
ms.Position = 0;
result = Encoding.UTF8.GetString(ms.ToArray());
}
return result;
}


2、json数据源存入在客户端隐藏控件中

复制代码 代码如下:


<input type="hidden" runat="server" />


3、注意隐藏控件放json数据后,因为包含"http://niutuku.com/",会使request请示发生错误,所以页头请设置ValidateRequest="false"

复制代码 代码如下:


<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true"


4、页面加载Page_Load时,初始化json数据源

复制代码 代码如下:


protected void Page_Load(object sender, EventArgs e)
{
#region 加载数据源
if (!IsPostBack)
{
List<TrainingImplement> list= new List<TrainingImplement> (){
new TrainingImplement (){
Code="aaa",
c_name ="bbb"
}
....
}//初始化数据源
hideDataSource.Value = ConvertObjectToByteData(list);
}
else
{
//如果是回传,数据源从客户端读取
List<TrainingImplement> list = ConvertByteDataToObject<List<TrainingImplement>>(hideDataSource.Value);
hideDataSource.Value = ConvertObjectToByteData(list);
}
#endregion


4、客户端js操作json数据源示例

复制代码 代码如下:


<script type="text/javascript" src="../Scripts/jquery-1.4.3.js"></script>
<script type="text/javascript" src="../Scripts/jquery-ui-1.8.7.custom.min.js"></script>
<script type="text/javascript" src="../Scripts/jquery.json-2.2.min.js"></script>
<script type ="text/javascript" >
var DataSourceHidName = "hideDataSource";
var dataSourceDom;
var dataSourceJson;
$(document).ready
(function () {
//获取数据源
dataSourceDom = document.getElementById(DataSourceHidName);
dataSourceJson = eval("(" + dataSourceDom.value + ")");
});
//修改第1个TrainingImplement对象的Code值示例方法
function ModifiedCode() {
dataSourceJson[0]._code = "Code001";
//将更新值后的json对象重新写入隐藏控件中
dataSourceDom.value = $.toJSON(dataSourceJson);
}
</script>


5、服务端C#操作Json数据源

复制代码 代码如下:


List<TrainingImplement> list = ConvertByteDataToObject<List<TrainingImplement>>(hideDataSource.Value);

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • c#常用的Datable转换为json,以及json转换为DataTable操作方法

    c#常用的Datable转换为json,以及json转换为DataTable操作方法

    2017-04-11 16:03

  • 动态读取JSON解析键值对的方法

    动态读取JSON解析键值对的方法

    2017-04-10 13:03

  • 在Swift中使用JavaScript的方法和技巧

    在Swift中使用JavaScript的方法和技巧

    2017-04-10 12:00

  • JS动态遍历json中所有键值对讫方法

    JS动态遍历json中所有键值对讫方法

    2017-04-10 11:02

网友点评