请问 如何输出json格式数据?

问题描述

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.Configuration;usingSystem.Data;usingSystem.Data.SqlClient;publicpartialclasstestttttttttttttt_输出Json格式:System.Web.UI.Page{string_conn=WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;protectedvoidPage_Load(objectsender,EventArgse){if(!Page.IsPostBack){get_json();}}publicvoidget_json(){stringjson="{";DataTabledt=get_data();for(inti=0;i<dt.Rows.Count;i++){json=json+"""+dt.Rows[i]["brandname"].ToString()+"":"+dt.Rows[i]["proname"].ToString()+"",";}json=json.Substring(0,json.Length-1);json+="}";Response.Write(json);}publicDataTableget_data(){SqlConnectioncon=newSqlConnection(_conn);SqlCommandcmd=newSqlCommand();cmd.Connection=con;cmd.CommandText="selecttop10*fromdatawherebrandid='3'";SqlDataAdaptersda=newSqlDataAdapter(cmd);DataTabledt=newDataTable();using(sda){sda.Fill(dt);}returndt;}}

得到能传给另外一个页面的纯JSON数据

解决方案

解决方案二:
前台发送ajax请求到后台一般处理程序,后台获取datatable后先转为对象(需要先建实体类),再通过JavaScriptSerializer类序列化返回前台。前台调用jQuery的$.parseJSON()方法反序列化为对象,通过js的for循环遍历对象取出元素,并拼接html语句另外,一些jQuery的grid插件可以直接将json字符串作为参数设置数据源
解决方案三:
引用1楼yaotomo的回复:

前台发送ajax请求到后台一般处理程序,后台获取datatable后先转为对象(需要先建实体类),再通过JavaScriptSerializer类序列化返回前台。前台调用jQuery的$.parseJSON()方法反序列化为对象,通过js的for循环遍历对象取出元素,并拼接html语句另外,一些jQuery的grid插件可以直接将json字符串作为参数设置数据源

我这样拼接不行吗?亲能给段代码,模仿一下吗?
解决方案四:
加句Response.ContentType设定,具体你新增个handler一般处理程序,里面默认有
解决方案五:
正常的数据服务,不要使用aspx,应该使用ashx。
解决方案六:
引用楼主qq_25693923的回复:

得到能传给另外一个页面的纯JSON数据

asp.net页面,是用来解析、编译、生成页面输出html的,不是传出“纯json数据”的。在页面中不得以、不得不写Response.End()这类语句,但是性能损耗(创建了无意义的Page对象,经历了完整的页面生命周期)已经造成了。所以应该使用ashx。
解决方案七:
例如在帖子中的第#8楼,我写了一个例子,可以把任意的关系数据查询结果转为json格式输出给客户端。但其实不需要DataTable,而是使用更为高效的List<ExpandoObject>(因为它只是暂存自由模式的对象数据,而并不需要内存数据库架构)。
解决方案八:
引用4楼sp1234的回复:

正常的数据服务,不要使用aspx,应该使用ashx。

引用2楼qq_25693923的回复:

Quote: 引用1楼yaotomo的回复:
前台发送ajax请求到后台一般处理程序,后台获取datatable后先转为对象(需要先建实体类),再通过JavaScriptSerializer类序列化返回前台。前台调用jQuery的$.parseJSON()方法反序列化为对象,通过js的for循环遍历对象取出元素,并拼接html语句另外,一些jQuery的grid插件可以直接将json字符串作为参数设置数据源

我这样拼接不行吗?亲能给段代码,模仿一下吗?

<%@WebHandlerLanguage="C#"Class="返回Json数据"%>usingSystem;usingSystem.Web;usingSystem.Web.Configuration;usingSystem.Data;usingSystem.Data.SqlClient;publicclass返回Json数据:IHttpHandler{string_conn=WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;publicvoidProcessRequest(HttpContextcontext){SqlConnectioncon=newSqlConnection(_conn);SqlCommandcmd=newSqlCommand();cmd.Connection=con;cmd.CommandText="selecttop10*fromdata";SqlDataAdaptersda=newSqlDataAdapter(cmd);DataTabledt=newDataTable();using(sda){sda.Fill(dt);}stringjson="{";for(inti=0;i<dt.Rows.Count;i++){json=json+"""+dt.Rows[i]["brandname"].ToString()+"":"+dt.Rows[i]["proname"].ToString()+"",";}json=json.Substring(0,json.Length-1);json+="}";context.Response.ContentType="text/plain";context.Response.Write(json);}publicboolIsReusable{get{returntrue;}}}

这样得到了纯文本的内容:{"苹果":橘子"......这咋整啊?这不对啊
解决方案九:
参考下其他人的例子做做就行了嘛
解决方案十:
这个贴子,看得难受。你先下载:然后加入下面的类。要格式化DataTable易如反掌注:自己拼字符串是不当的,很容易出错。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data;usingSystem.IO;usingNewtonsoft.Json;usingSystem.Web;usingSystem.Reflection;usingSystem.Collections;usingSystem.Text.RegularExpressions;//缺少编译器要求的成员“ystem.Runtime.CompilerServices.ExtensionAttribute..ctor”namespaceSystem.Runtime.CompilerServices{publicclassExtensionAttribute:Attribute{}}namespaceUtil{///<summary>///Author:yenange///Date:2013-12-11///Description:json辅助类///</summary>publicclassJsonHelper{///<summary>///DataSet转JSON.addbyngye,on2013-02-18.///</summary>///<paramname="ds">需要转换的数据源ds</param>///<returns>json字符串</returns>publicstaticstringDataSetToJson(DataSetds){stringjson=string.Empty;if(ds==null)returnjson;StringBuildersb=newStringBuilder();StringWritersw=newStringWriter(sb);try{using(JsonWriterjw=newJsonTextWriter(sw)){JsonSerializerser=newJsonSerializer();jw.WriteStartArray();foreach(DataTabledtinds.Tables){jw.WriteStartObject();jw.WritePropertyName(dt.TableName);jw.WriteStartArray();foreach(DataRowdrindt.Rows){jw.WriteStartObject();foreach(DataColumndcindt.Columns){jw.WritePropertyName(dc.ColumnName);ser.Serialize(jw,dr[dc].ToString());}jw.WriteEndObject();}jw.WriteEndArray();jw.WriteEndObject();}jw.WriteEndArray();sw.Close();jw.Close();}}catch(Exceptionex){returnex.Message;}returnsb.ToString();}///<summary>///DataTable转JSON///</summary>///<paramname="atable_data">数据源DataTable</param>///<returns>返回DataTable转换成功的Json格式</returns>///publicstaticstringDataTableToJson(DataTabledt){strings_jsonstring=string.Empty;//参数检测if(dt==null)returns_jsonstring;StringBuildersb=newStringBuilder();StringWritersw=newStringWriter(sb);using(JsonWriterjw=newJsonTextWriter(sw)){JsonSerializerser=newJsonSerializer();jw.WriteStartArray();foreach(DataRowdrindt.Rows){jw.WriteStartObject();foreach(DataColumndcindt.Columns){jw.WritePropertyName(dc.ColumnName);ser.Serialize(jw,dr[dc].ToString());}jw.WriteEndObject();}jw.WriteEndArray();sw.Close();jw.Close();}returnsb.ToString();}///<summary>///把DataRow转换为Json格式///</summary>///<paramname="dr">行记录信息</param>///<returns>返回DataRow转换成功的Json格式</returns>publicstaticstringDataRowToJson(DataRowdr){stringjsonString=string.Empty;//参数检测if(dr==null)returnjsonString;StringBuildersb=newStringBuilder();StringWritersw=newStringWriter(sb);DataTabletableData=dr.Table;using(JsonWriterjw=newJsonTextWriter(sw)){JsonSerializerser=newJsonSerializer();jw.WriteStartArray();jw.WriteStartObject();foreach(DataColumndcintableData.Columns){jw.WritePropertyName(dc.ColumnName);ser.Serialize(jw,dr[dc].ToString());}jw.WriteEndObject();jw.WriteEndArray();sw.Close();jw.Close();}returnsb.ToString();}///<summary>///将json输出到客户端///</summary>///<paramname="json">Json格式内容</param>publicstaticvoidResponseWriteJson(Stringjson){HttpContext.Current.Response.ContentType="text/json";HttpContext.Current.Response.Write(json);}#regionJson的序列化和反序列化///<summary>//////</summary>///<paramname="obj"></param>///<returns></returns>publicstaticstringToJson(objectobj){stringstrJson=string.Empty;try{strJson=Newtonsoft.Json.JsonConvert.SerializeObject(obj,newDateTimeJsonConverter(),newLongJsonConverter());}catch(Exceptionex){//NengLong.CMP.Log.Base.Logging.Logger.Current.Fatal(ex);}returnstrJson;}///<summary>//////</summary>///<typeparamname="T"></typeparam>///<returns></returns>publicstaticTFromJson<T>(stringsJson){try{returnNewtonsoft.Json.JsonConvert.DeserializeObject<T>(sJson,newDateTimeJsonConverter(),newLongJsonConverter());}catch(Exceptionex){//NengLong.CMP.Log.Base.Logging.Logger.Current.ErrorFormat("sJson={0}",ex,sJson);//NengLong.CMP.Log.Base.Logging.Logger.Current.Fatal(ex);}returndefault(T);}#endregionprivateclassDateTimeJsonConverter:Newtonsoft.Json.JsonConverter{publicoverrideboolCanConvert(TypeobjectType){returntypeof(DateTime).IsAssignableFrom(objectType);}publicoverridevoidWriteJson(Newtonsoft.Json.JsonWriterwriter,objectvalue,Newtonsoft.Json.JsonSerializerserializer){DateTimedt=(DateTime)value;writer.WriteValue(dt.ToString("yyyy-MM-ddHH:mm:ss"));}publicoverrideobjectReadJson(Newtonsoft.Json.JsonReaderreader,TypeobjectType,objectexistingValue,Newtonsoft.Json.JsonSerializerserializer){returnDateTime.Parse(reader.Value.ToString());}}privateclassLongJsonConverter:Newtonsoft.Json.JsonConverter{publicoverrideboolCanConvert(TypeobjectType){returntypeof(long).IsAssignableFrom(objectType);}publicoverridevoidWriteJson(Newtonsoft.Json.JsonWriterwriter,objectvalue,Newtonsoft.Json.JsonSerializerserializer){writer.WriteValue(value.ToString());}publicoverrideobjectReadJson(Newtonsoft.Json.JsonReaderreader,TypeobjectType,objectexistingValue,Newtonsoft.Json.JsonSerializerserializer){longv=0;long.TryParse(reader.Value.ToString(),outv);returnv;}}privateclassStringJsonConverter:Newtonsoft.Json.JsonConverter{publicoverrideboolCanConvert(TypeobjectType){returntypeof(string).IsAssignableFrom(objectType);}publicoverridevoidWriteJson(Newtonsoft.Json.JsonWriterwriter,objectvalue,Newtonsoft.Json.JsonSerializerserializer){writer.WriteValue(value.ToString());}publicoverrideobjectReadJson(Newtonsoft.Json.JsonReaderreader,TypeobjectType,objectexistingValue,Newtonsoft.Json.JsonSerializerserializer){returnSystem.Web.HttpUtility.UrlDecode(reader.Value.ToString());}}}}

解决方案十一:
参考:相关:
解决方案十二:
引用10楼insus的回复:

参考:相关:

参考了,按照第一个帖子里面的例子,也得出了与我上面内容一样的结果,所以:我拼接字符串应该也是正确的我明白了,应该是JQUERY部分的代码有问题,造成了这样的输出,实际json字段的生成已经OK了
解决方案十三:
引用9楼yenange的回复:

这个贴子,看得难受。你先下载:然后加入下面的类。要格式化DataTable易如反掌注:自己拼字符串是不当的,很容易出错。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data;usingSystem.IO;usingNewtonsoft.Json;usingSystem.Web;usingSystem.Reflection;usingSystem.Collections;usingSystem.Text.RegularExpressions;//缺少编译器要求的成员“ystem.Runtime.CompilerServices.ExtensionAttribute..ctor”namespaceSystem.Runtime.CompilerServices{publicclassExtensionAttribute:Attribute{}}namespaceUtil{///<summary>///Author:yenange///Date:2013-12-11///Description:json辅助类///</summary>publicclassJsonHelper{///<summary>///DataSet转JSON.addbyngye,on2013-02-18.///</summary>///<paramname="ds">需要转换的数据源ds</param>///<returns>json字符串</returns>publicstaticstringDataSetToJson(DataSetds){stringjson=string.Empty;if(ds==null)returnjson;StringBuildersb=newStringBuilder();StringWritersw=newStringWriter(sb);try{using(JsonWriterjw=newJsonTextWriter(sw)){JsonSerializerser=newJsonSerializer();jw.WriteStartArray();foreach(DataTabledtinds.Tables){jw.WriteStartObject();jw.WritePropertyName(dt.TableName);jw.WriteStartArray();foreach(DataRowdrindt.Rows){jw.WriteStartObject();foreach(DataColumndcindt.Columns){jw.WritePropertyName(dc.ColumnName);ser.Serialize(jw,dr[dc].ToString());}jw.WriteEndObject();}jw.WriteEndArray();jw.WriteEndObject();}jw.WriteEndArray();sw.Close();jw.Close();}}catch(Exceptionex){returnex.Message;}returnsb.ToString();}///<summary>///DataTable转JSON///</summary>///<paramname="atable_data">数据源DataTable</param>///<returns>返回DataTable转换成功的Json格式</returns>///publicstaticstringDataTableToJson(DataTabledt){strings_jsonstring=string.Empty;//参数检测if(dt==null)returns_jsonstring;StringBuildersb=newStringBuilder();StringWritersw=newStringWriter(sb);using(JsonWriterjw=newJsonTextWriter(sw)){JsonSerializerser=newJsonSerializer();jw.WriteStartArray();foreach(DataRowdrindt.Rows){jw.WriteStartObject();foreach(DataColumndcindt.Columns){jw.WritePropertyName(dc.ColumnName);ser.Serialize(jw,dr[dc].ToString());}jw.WriteEndObject();}jw.WriteEndArray();sw.Close();jw.Close();}returnsb.ToString();}///<summary>///把DataRow转换为Json格式///</summary>///<paramname="dr">行记录信息</param>///<returns>返回DataRow转换成功的Json格式</returns>publicstaticstringDataRowToJson(DataRowdr){stringjsonString=string.Empty;//参数检测if(dr==null)returnjsonString;StringBuildersb=newStringBuilder();StringWritersw=newStringWriter(sb);DataTabletableData=dr.Table;using(JsonWriterjw=newJsonTextWriter(sw)){JsonSerializerser=newJsonSerializer();jw.WriteStartArray();jw.WriteStartObject();foreach(DataColumndcintableData.Columns){jw.WritePropertyName(dc.ColumnName);ser.Serialize(jw,dr[dc].ToString());}jw.WriteEndObject();jw.WriteEndArray();sw.Close();jw.Close();}returnsb.ToString();}///<summary>///将json输出到客户端///</summary>///<paramname="json">Json格式内容</param>publicstaticvoidResponseWriteJson(Stringjson){HttpContext.Current.Response.ContentType="text/json";HttpContext.Current.Response.Write(json);}#regionJson的序列化和反序列化///<summary>//////</summary>///<paramname="obj"></param>///<returns></returns>publicstaticstringToJson(objectobj){stringstrJson=string.Empty;try{strJson=Newtonsoft.Json.JsonConvert.SerializeObject(obj,newDateTimeJsonConverter(),newLongJsonConverter());}catch(Exceptionex){//NengLong.CMP.Log.Base.Logging.Logger.Current.Fatal(ex);}returnstrJson;}///<summary>//////</summary>///<typeparamname="T"></typeparam>///<returns></returns>publicstaticTFromJson<T>(stringsJson){try{returnNewtonsoft.Json.JsonConvert.DeserializeObject<T>(sJson,newDateTimeJsonConverter(),newLongJsonConverter());}catch(Exceptionex){//NengLong.CMP.Log.Base.Logging.Logger.Current.ErrorFormat("sJson={0}",ex,sJson);//NengLong.CMP.Log.Base.Logging.Logger.Current.Fatal(ex);}returndefault(T);}#endregionprivateclassDateTimeJsonConverter:Newtonsoft.Json.JsonConverter{publicoverrideboolCanConvert(TypeobjectType){returntypeof(DateTime).IsAssignableFrom(objectType);}publicoverridevoidWriteJson(Newtonsoft.Json.JsonWriterwriter,objectvalue,Newtonsoft.Json.JsonSerializerserializer){DateTimedt=(DateTime)value;writer.WriteValue(dt.ToString("yyyy-MM-ddHH:mm:ss"));}publicoverrideobjectReadJson(Newtonsoft.Json.JsonReaderreader,TypeobjectType,objectexistingValue,Newtonsoft.Json.JsonSerializerserializer){returnDateTime.Parse(reader.Value.ToString());}}privateclassLongJsonConverter:Newtonsoft.Json.JsonConverter{publicoverrideboolCanConvert(TypeobjectType){returntypeof(long).IsAssignableFrom(objectType);}publicoverridevoidWriteJson(Newtonsoft.Json.JsonWriterwriter,objectvalue,Newtonsoft.Json.JsonSerializerserializer){writer.WriteValue(value.ToString());}publicoverrideobjectReadJson(Newtonsoft.Json.JsonReaderreader,TypeobjectType,objectexistingValue,Newtonsoft.Json.JsonSerializerserializer){longv=0;long.TryParse(reader.Value.ToString(),outv);returnv;}}privateclassStringJsonConverter:Newtonsoft.Json.JsonConverter{publicoverrideboolCanConvert(TypeobjectType){returntypeof(string).IsAssignableFrom(objectType);}publicoverridevoidWriteJson(Newtonsoft.Json.JsonWriterwriter,objectvalue,Newtonsoft.Json.JsonSerializerserializer){writer.WriteValue(value.ToString());}publicoverrideobjectReadJson(Newtonsoft.Json.JsonReaderreader,TypeobjectType,objectexistingValue,Newtonsoft.Json.JsonSerializerserializer){returnSystem.Web.HttpUtility.UrlDecode(reader.Value.ToString());}}}}

大哥,你这个写法太复杂了,一时半会儿看不懂啊
解决方案十四:
不需要懂,学会用就好了。json自己拼接很容易出问题的,比如字符串里有特殊字符如:双引号。Util.JsonHelper.DataTableToJson(dt);

解决方案十五:
stringjson=Util.JsonHelper.DataTableToJson(dt);

解决方案:
为什么要将整个json传到另一页面,将brandid='3'这个参数传过去之后,在那边取数据,拼接json不好吗。
解决方案:
引用14楼yenange的回复:

stringjson=Util.JsonHelper.DataTableToJson(dt);

谢谢!引用15楼BitCoffee的回复:

为什么要将整个json传到另一页面,将brandid='3'这个参数传过去之后,在那边取数据,拼接json不好吗。

在另外一个页面做搜索推荐功能
解决方案:
<scriptsrc="js/jquery.js"type="text/javascript"></script><scripttype="text/javascript">$(document).ready(function(){var$autocomplete=$('<ulclass="autocomplete"></ul>').hide().insertAfter('#search-text');$('#search-text').keyup(function(){$.ajax({'url':'输出json.ashx','data':{'search-text':$('#search-text').val()},'dateType':'json','success':function(data){if(data.length){$autocomplete.empty();$.each(data,function(index,term){$('<li></li>').text(term).appendTo($autocomplete);});$autocomplete.show();}}});});});</script>

问题应该出在这里,结果把每2个字符当作一个term放入<li><li/>中,想要的是把每一个json以逗号分隔的Value的放进来

时间: 2024-07-29 22:16:14

请问 如何输出json格式数据?的相关文章

ASP.NET输出JSON格式数据

最近在开发Windows8 Metro App,使用JavaScript和HTML开发环境.所以操作数据绑定都是使用JSON格式数据.后台使用的是ASP.NET,因为项目相对较小,所有 后台没有使用数据库,使用的XML来保存数据.前台需要请求后台返回JSON格式的数据,比如要求返回一个eventslist,后台操作XML的方法省 略.主要讨论如何使用Hashtable和ArrayList,然后加上ASP.NET自带的JavaScriptSerializer来生成JSON数 据,然后返回给前端使用

php输出json格式数据的例子

我们要在利用Content-type:text/json才可以正常显示是json数据哦.  代码如下 复制代码 <?php    header('Content-type:text/json');     //这句是重点,它告诉接收数据的对象此页面输出的是json数据:    $json={"n":"name","p":"password"};           //虽然这行数据形式上是json格式,如果没有上面那句的

这段代码输出保存在数据库中的json格式数据怎么用java代码在前端显示出来

问题描述 这段代码输出保存在数据库中的json格式数据怎么用java代码在前端显示出来 public class SaveHotKeySkillReq extends CommandBase { @Resource //数据库操作 private EntityManager em; protected void execute() throws GMessageException { CRequesthotKeyChange msg = pak.readMsg(CRequesthotKeyCha

python中json格式数据输出实现方式

python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下:     #coding=UTF-8 import json info={} info["code"]=1 info["id"]=1900 info["name"]='张三' info["sex"]='男' list=[info,info,info] data={} data["code"]=

python中json格式数据输出的简单实现方法_python

主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info["code"]=1 info["id"]=1900 info["name"]='张三' info["sex"]='男' list=[info,info,info] data={} data["code"]=1 data["id"]=190

如何将ajax请求返回的Json格式数据循环输出成table形式_AJAX相关

首先,Ajax请求数据,(用的是Jquery的Ajax) 复制代码 代码如下: <script> $(function(){ $('#test').click(function(){ $.ajax({ url:'__APP__/Article/jsonTest', type:'post', success:function(data){ var item; $.each(data,function(i,result){ item = "<tr><td>&quo

如何将ajax请求返回的Json格式数据循环输出成table形式

首先,Ajax请求数据,(用的是Jquery的Ajax) 复制代码 代码如下: <script> $(function(){ $('#test').click(function(){ $.ajax({ url:'__APP__/Article/jsonTest', type:'post', success:function(data){ var item; $.each(data,function(i,result){ item = "<tr><td>&quo

php处理json格式数据经典案例总结_php技巧

本文实例总结了php处理json格式数据的方法.分享给大家供大家参考,具体如下: 1.json简介: 何为json? 简 单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序. 通俗点讲,它是一种数据的存储格式,就像php序列化后的字符串一样. 它也是一种数据描述,比如:我们将一个数组序列化后存放,就可以很容易的反序列化后应用:json也是如此,只不过它搭建的是

Yii2 输出xml格式数据的方法_php实例

php中对xml的处理,虽然说实际开发中目前用的少了,但是难免会用到,用到的时候呢,总结起来还是稍稍有那么一丁点的麻烦. 我们来看看yii2中是怎么对xml进行处理的.会超乎你想象的简单哦. 我们以输出xml格式的数据为例. 既然是输出,必然就涉及到web请求与响应了,不熟悉的可以先去了解下HTTP协议. yii2中支持以下几种返回格式,均可自定义配置. HTML: implemented by yii\web\HtmlResponseFormatter. XML: implemented by