读书人

。如何接收及显示一个JSON数据

发布时间: 2013-07-16 22:38:05 作者: rapoo

求助。怎么接收及显示一个JSON数据
正在接入一个机票接口;查询航班时对方直接给我返回了一个很庞大的JSON数据;求助:怎么获取、显示在前台页面上面 JSON C# asp.net 序列化 机票
[解决办法]
首先要分析它给你的json数据的格式啊
一般都是一个对象然后里面套集合啊,集合又是套对象啊
一般是这样{[],[],[],[]}
遇到大括号是对象,遇到中括号是集合啊
[解决办法]
应该会告诉你接口的调用方法吧,比如一个地址,那么你可以访问WebService的方式取得返回数据JSON,本身前台页面就可以解析JSON,然后遍历展示
[解决办法]
$.getJSON("你的json地址",{param:"gaoyusi"},function(data){
  $.each(data.root,function(idx,item){
  if(idx==0){
  return true;//同countinue,返回false同break
  }
  alert("name:"+item.name+",value:"+item.value);
  });
  });

注意json格式为如下才可以用:
var data="

  {

  root:

  [

  {name:'1',value:'0'},

  {name:'6101',value:'北京市'},

  {name:'6102',value:'天津市'},

  {name:'6103',value:'上海市'},

  {name:'6104',value:'重庆市'},

  {name:'6105',value:'渭南市'},

  {name:'6106',value:'延安市'},

  {name:'6107',value:'汉中市'},

  {name:'6108',value:'榆林市'},

  {name:'6109',value:'安康市'},

  {name:'6110',value:'商洛市'}

  ]

  }";

如果不是,你要注意灵活点:
alert("name:"+item.name+",value:"+item.value);
这句的获取方式;
[]相当于数组,{}这个相当于对象,:相当于属性,如果出现多个[],多个{}怎么办,那么连续使用这个:
$.each(data.root,function(idx,item)就可以了。注意变通




[解决办法]
写错了 var obj = eavl('('+json+")") 调试对象看看是什么结构
[解决办法]

引用:
后台接受这些都弄好了,现在正在转,.NET后台处理JSON数据就是麻烦,没有用JS来得方便


如果你不是使用一行或者两行代码来搞定这个,说明你现在还不太懂.net处理json。
[解决办法]
引用:
Quote: 引用:

一般来说做这样的系统,在客户端去调用别人的API的可能性基本就等于0,原因是安全性问题,客户端的代码,大家都可以看得到,你可以调用,别人也可以按你的方式去调用机票的接口,后果就不用我说了。

所以基于以上原因,我们一般都是服务器端去调用机票接口的。
1. 如何调用API


这个要参考机票接口那边提供的相关文档才行,一般都是调用WebRequest去调用。
2. 调用成功之后数据的解析
按你提供的信息,调用成功后返回的都是JSON字符串信息,那我们只要去解析这个JSON字符串就可以了。目前.NET用的比较多的是Newtonsoft.Json.Net,具体可以查一下怎么使用就知道了。
3. 显示数据
你了解了Newtonsoft.Json.Net之后,你就知道怎么去处理JSON对象了。


后台接受这些都弄好了,现在正在转,.NET后台处理JSON数据就是麻烦,没有用JS来得方便

查一下Newtonsoft.Json.Net的Demo就可以了,网上一大把
http://blog.csdn.net/zhoufoxcn/article/details/6254657
[解决办法]
var param = jQuery.param({ sql: sqlSite });
jQuery.ajax({
type: "post",
url: "/Ajax/MapSite.ashx",
async: false,
data: param,
success: function (data, textStatus) {}
});传到后台
System.Runtime.Serialization.Json.DataContractJsonSerializer ser = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(IList<DEMapSite>));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, list_DESite);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
//context.Response.Write(sb.ToString());
context.Response.Clear();
context.Response.ContentType = "application/json";
context.Response.Write(jsonString);
context.Response.End();
给前台
然后用eval(data)转换一下

读书人网 >asp.net

热点推荐