jison在线解析
编辑: 成考报名 发布时间:09-30 阅读:
JSON 教程
jison在线解析 第一篇
JSON 教程 JSON 教程 JSON 简介 JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。 每一章中用到的实例 { "employees": [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" } ] } 这个 employee 对象是包含 3 个员工记录(对象)的数组。 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更易理解 * JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许 多不同的编程语言。 JSON - 转换为 JavaScript 对象 JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。 由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。 1
SON 简介 JSON 教程 JSON 语法 亲自试一试 - 实例 通过我们的编辑器,您可以在线编辑 JavaScript 代码,然后通过点击一个按钮来查看结果: <html> <body> <h2>在 JavaScript 中创建 JSON 对象</h2> <p> Name: <span id="jname"></span><br /> Age: <span id="jage"></span><br /> Address: <span id="jstreet"></span><br /> Phone: <span id="jphone"></span><br /> </p> <script type="text/javascript"> var JSONObject= { "name":"Bill Gates", "street":"Fifth Avenue New York 666", "age":56, "phone":"555 1234567"}; document.getElementById("jname").innerHTML=JSONObject.name document.getElementById("jage").innerHTML=JSONObject.age document.getElementById("jstreet").innerHTML=JSONObject.street document.getElementById("jphone").innerHTML=JSONObject.phone </script> </body> </html> 亲自试一试 类似 XML JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级结构(值中存在值) JSON 可通过 JavaScript 进行解析 JSON 数据可使用 AJAX 进行传输 相比 XML 的不同之处 没有结束标签 更短 读写的速度更快 2
能够使用内建的 JavaScript eval() 方法进行解析 使用数组 不使用保留字 为什么使用 JSON? 对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用: 使用 XML 读取 XML 文档 使用 XML DOM 来循环遍历文档 读取值并存储在变量中 使用 JSON 读取 JSON 字符串 用 eval() 处理 JSON 字符串 JSON 语法 JSON 简介 JSON 使用 JSON 语法是 JavaScript 语法的子集。 JSON 语法规则 JSON 语法是 JavaScript 对象表示法语法的子集。 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数据的书写格式是:名称/值对。 名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值: "firstName" : "John" 这很容易理解,等价于这条 JavaScript 语句: firstName = "John" JSON 值 JSON 值可以是: 数字(整数或浮点数) 3
字符串(在双引号中) 逻辑值(true 或 false) 数组(在方括号中) 对象(在花括号中) null JSON 对象 JSON 对象在花括号中书写: 对象可以包含多个名称/值对: { "firstName":"John" , "lastName":"Doe" } 这一点也容易理解,与这条 JavaScript 语句等价: firstName = "John" lastName = "Doe" JSON 数组 JSON 数组在方括号中书写: 数组可包含多个对象: { "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] } 在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。 JSON 使用 JavaScript 语法 因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。 通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值: 例子 var employees = [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName": "Carter" } 4
]; 可以像这样访问 JavaScript 对象数组中的第一项: employees[0].lastName; 返回的内容是: Gates 可以像这样修改数据: employees[0].lastName = "Jobs"; 亲自试一试 在下面的章节,您将学到如何把 JSON 文本转换为 JavaScript 对象。 JSON 文件 JSON 文件的文件类型是 ".json" JSON 文本的 MIME 类型是 "application/json" JSON 使用 JSON 语法 JSON 教程 把 JSON 文本转换为 JavaScript 对象 JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转 换为 JavaScript 对象,然后在网页中使用该数据。 为了更简单地为您讲解,我们使用字符串作为输入进行演示(而不是文件)。 JSON 实例 - 来自字符串的对象 创建包含 JSON 语法的 JavaScript 字符串: var txt = '{ "employees" : [' + '{ "firstName":"Bill" , "lastName":"Gates" },' + '{ "firstName":"George" , "lastName":"Bush" },' + '{ "firstName":"Thomas" , "lastName":"Carter" } ]}'; 由于 JSON 语法是 JavaScript 语法的子集, JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。 5
API文档大全(120+) JS在线编辑演示
jison在线解析 第二篇
Git代码托管 API文档大全(120+) JS在线编辑演示 二维码
为所有资源查找重写当前线程的 CurrentUICulture 属性,
方法是使用此强类型资源类。
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture; 6[C#] JZ.Project 19小时前 嘟嘟嘟嘟丶药
24[C#] 基于C#的黄金数据接口调用代码实例 1天前 app接口
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
开源中国-程序员在线工具:更多»
相关的代码(397)
53[C#] sql注入之关键字过滤 2天前 HJCui
<summary>
返回此类使用的、缓存的 ResourceManager 实例。
<summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new
global::System.Resources.ResourceManager("ExcelToDB_Form.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}[文件] TableDataPanel.java ~ 7KB
package com.yisin.cf.form;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Map;
import java.util.Vector;
53[C#] 基于C#的重仓股基金接口调用代码实例 1周前 php接口开发
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.plaf.InsetsUIResource;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;【jison在线解析】
56[C#] 基于C#的货币汇率接口调用代码实例 2周前 app接口开发
import com.yisin.cf.db.DBHelper;
import com.yisin.cf.util.SQLFormatter;
public class TableDataPanel extends BasePanel {
private String sql = "";
private String tableName = "";
private int width = 900, height = 600;
public TableDataPanel(int width, int height) {
this.width = width;
this.height = height;
initCommpant();
}
public void viewTableData(String tableName) {
if (tableName != null) {
this.tableName = tableName;
sql = "select * from " + tableName + " limit 0, 1000"; // 执行SQL
excuteSql();
} else {
sql = "";
}
sqlArea.setText(sql);
}
public JTextArea sqlArea;
public JTextArea infoArea;
public JTable dataTable;
public DefaultTableModel model = null;
public JButton excuteBtn;
public JButton formatBtn;
public JScrollPane tabJsp;
public JScrollPane infoJsp;
[代码] [Google Go]代码
package main
import (
"io/ioutil"
"net/http"
"net/"
"fmt"
"encoding/json"
)
//----------------------------------
// 黄金数据调用示例代码 - 聚合数据
// 在线接口文档:
//----------------------------------
const APPKEY = "*******************" //您申请的APPKEY
func main(){
//1.上海黄金交易所
Request1()
//2.上海期货交易所
Request2()
//3.银行账户黄金
Request3()
}
//1.上海黄金交易所
func Request1(){
//请求地址
juhe/finance/gold/shgold"
//初始化参数
param:=.Values{}
//配置请求参数,方法内部已处理encode问题,中文参数可以直接传参 param.Set("key",APPKEY) //APP Key
param.Set("v","") //JSON格式版本(0或1)默认为0
//发送请求
data,err:=Get(juhe,param)
if err!=nil{
fmt.Errorf("请求失败,错误信息:\r\n%v",err)
}else{
var netReturn map[string]interface{}
json.Unmarshal(data,&netReturn)
if netReturn["error_code"].(float64)==0{
fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"]) }
}
}
//2.上海期货交易所
func Request2(){
//请求地址
juhe/finance/gold/shfuture"
//初始化参数
param:=.Values{}
//配置请求参数,方法内部已处理encode问题,中文参数可以直接传参 param.Set("key",APPKEY) //APP Key
param.Set("v","") //JSON格式版本(0或1)默认为0
//发送请求
data,err:=Get(juhe,param)
if err!=nil{
fmt.Errorf("请求失败,错误信息:\r\n%v",err)
}else{
var netReturn map[string]interface{}
json.Unmarshal(data,&netReturn)
if netReturn["error_code"].(float64)==0{
fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"]) }
}
}
//3.银行账户黄金
func Request3(){
//请求地址
juhe/finance/gold/bankgold"
//初始化参数
param:=.Values{}
//配置请求参数,方法内部已处理encode问题,中文参数可以直接传参 param.Set("key",APPKEY) //APP Key
//发送请求
data,err:=Get(juhe,param)
if err!=nil{
fmt.Errorf("请求失败,错误信息:\r\n%v",err)
}else{
var netReturn map[string]interface{}
json.Unmarshal(data,&netReturn)
if netReturn["error_code"].(float64)==0{
fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"]) }
}
}
// get 网络请求
func Get(api string,params .Values)(rs[]byte ,err error){
var *.
,err=.Parse(api)
if err!=nil{
fmt.Printf("解析错误:\r\n%v",err)
return nil,err
}
//如果参数中有中文参数,这个方法会进行Encode
.RawQuery=params.Encode()
resp,err:=http.Get(.String())
if err!=nil{【jison在线解析】
fmt.Println("err:",err)
return nil,err
}
defer resp.Body.Close()
return ioutil.ReadAll(resp.Body)
}
超级经典聊天室系统实现 Ajax+PHP+Js+Json无刷新技术
jison在线解析 第三篇
Ajax+Javascript+Json技术想必同学们也跟我学了这么多天了,也许有很多同学们不禁要问,Ajax除了做验证、下拉菜单联动...还能做什么,我想说这个问题问的太好了,接下来我们就来说说Ajax到底还能做哪些?Web2.0时代,ajax能做的事情实在是太多了,用途也比较广泛,
比如:在面向消费者的诸多应用当中,Google的Gmail和GoogleMaps就是最常见的例子。在Gmail当中,AJAX负责如何开启线程会话,以显示不同邮件的文本内容。而在Maps当中,AJAX允许用户以一种似乎无缝的方式拖拉及滚动地图。
还有雅虎的Flickr像片共享应用和亚马逊网站的A9搜索引擎。另外,雅虎新的Web邮件服务可能很快就会吸引AJAX支持者的莫大关注,这项服务基于雅虎收购Oddpost后得到的技术。
然而,AJAX应用软件厂商越来越把目光瞄准了企业。譬如说,Scalix的WebAccess电子邮件应用软件其实比微软Outlook自己的Web邮件界面更像Outlook。
说了那么多应用,我们今天先来学习一个比较简单、经典的ajax应用:简易聊天室的实现。
说到聊天室,相信大家并不陌生,我们经常去比较熟悉网易、新浪等门户网站,他们都有对应的聊天室,记得我最多的时候去的是体育赛事聊天室\直播室,那看似很神秘的聊天室,是怎么实现的呢?好多同学也肯定比较好奇,如果你比较好奇的话,就跟我往下看吧,
效果图:
聊天室的实现思路:【jison在线解析】
聊天室,给我们的第一印象是就是一个实时的在线交流平台,谁都可以进去,进去后可以直接说话,和大家聊天。
那如果要开发一个聊天室应该解决那些技术问题?
我们来分析一下:
1)要解决数据存储的问题(聊天的内容存储到哪里)
2)数据要实时的显示在网页上(最新的聊天内容要及时的显示出来)
3)何时为用户在线,何时用户下线
4)处理一些小的细节,比如聊天内容多后,聊天内容跟显示窗口的跟随滚动问题
能够快捷键发送信息等问题。
应该如何解决呢?
接上文,我们提出了实现聊天室必须要解决的问题,下面我们来一起探讨下,这些问题将如何解决。
1)关于数据存储的问题。 数据存储可以采用多种形式,如:xml、写入文件,在其他语言中还是可以用application这个全局变量,而在PHP中没有这个全局变量,需要自己封装,还用使用数据库存储数据。本人比较懒惰,呵呵,使用数据库技术实现对数据的存储,这样即有利于数据的永久保存,更方便我们书写代码。
2)数据显示的问题。数据显示的问题也可以通过多种方法来实现,比如:可以定时让网页刷新,每次刷新从数据库中读取数据,但是这种方法的最大问题是,每次可能会从数据库中取出所有的聊天信息,这样效率太差了。如果同时有几百个人同时在线,那么这个
聊天室就会很慢很卡了,还有一种技术是采用Ajax技术实现局部刷新技术,动态的读取所需要的数据,这里应该说明一点要,实现聊天室一定要考虑性能、效率问题,所以读取数局决不能读取所有数据,而是要每次读取最后一条或者几条最新的数据...
我的这个聊天室已经实现这部分,请大家继续往下看。
3)判断用户何时在线,何时离线。我们的在线用户列表中显示的是在线的用户,那何时判断用户在线情况的呢,我们这里是这样处理的,首先当用户进入聊天室的时候,需要初始化聊天室信息,以后每隔一段时间读取一次数据库,而我正是利用这点每次把用户的IP插入和当前时间插入到数据库中,当然,当当前用户IP已经存在当前表中,则我直接更新用户的最后一次登录时间,所以当用户没有离开这个页面,我都认为是在线。否则的情况是离线,离线的时候应该从用户在线表中删除当前用户的信息,最后把所有的用户显示到在线列表中。
4)聊天室的一些特殊的处理。这里特殊处理包括当文字内容特别多的时候,会出现滚动条,让滚动条跟随内容滚动到底部,处理一些快捷键,直接可以发送信息等。 下面直接看源码:
聊天室登录页面 1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
2. <html xmlns="
3. <head>
4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312"
/>
5. <title>欢迎使用AJAX聊天室</title>
6. </head>
7.
8. <body>
9. <form action="chatindex.php" name="form1" method="post">
10. <table width="400" border="1" align="center">
11. <tr>
12. <th height="52" colspan="2" scope="col">欢迎使用AJAX聊天室</th>
13. </tr>
14. <tr>
15. <td width="107">用户名:</td>
16. <td width="277"><input type="text" name="username" /></td>
17. </tr>
18. <tr>
19. <td>密 码:</td>
20. <td><input type="password" name="password" /></td>
21. </tr>
22. <tr>
23. <td></td>
24. <td><input type="submit" value="进入聊天室" /><input type="reset"
value="取消"></td>
25. </tr>
26. </table> 27. </form>
28. <p align="center">河北软件职业技术学院CSDN学院PHP方向 版权所有
copyright 2011</p>
29. </body>
30. </html>
复制代码
聊天室首页: 1.
2.
3.
4.
5.
6.
7.
8.
9. <?php session_start(); if(!isset($_SESSION['user'])) { $_SESSION['user']=$_POST['username']; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
10. <html xmlns="
11. <head>
12. <meta http-equiv="Content-Type" content="text/html; charset=gb2312"
/>
13. <title>欢迎使用AJAX聊天室</title>
14. <style>
15. .content{
16. height:300px;
17. width:616px;
18. font-size:14px;
19. color:#666666;
20. overflow:scroll;
21. background-color:#FFFF99;
22.
23. }
24. .sendtext{
25. color: #009900;
26. background-color:#CCFFCC;
27. font-size:14px;
28. }
29. .users{
30. width:170px;
31. }
32. .send{
33. width:60px;
34. height:50px;
35. color:#0033CC;}
36. </style>
37. </head>
38.
39. <body>
40. <table width="800" height="360" border="0" align="center"
cellpadding="1" cellspacing="1" bgcolor="#993399">
41. <tr>
42. <th width="616" height="31" bgcolor="#FFFFFF" scope="col">欢迎, <?php
echo $_SESSION['user']; ?> 进入聊天室
43. <input type="hidden" id="user" value="<?php echo
$_SESSION['user']; ?>" /></th>
44. <th width="184" rowspan="3" valign="middle" bgcolor="#FFFFFF"
scope="col"><select id="userlist" class="users" size="27"><option>所有人</option></select></th>
45. </tr>
46. <tr>
47. <td bgcolor="#FFFFFF"><div id="content" class="content"></div></td>
48. </tr>
49. <tr>
50. <td bgcolor="#FFFFFF"><table width="800%" border="0" cellspacing="0"
cellpadding="0">
51. <tr>
52. <td width="15%" align="right"><strong>我说:</strong></td>
53. <td width="60%"><textarea id="sendtext" class="sendtext" cols="60"
rows="3" onkeypress="send1()"></textarea></td>
54. <td width="25%" align="center"><input type="button" class="send"
value="发送" onclick="sengMsg()" /></td>
55. </tr>
56. </table></td>
57. </tr>
58. </table>
59. <p align="center">河北软件职业技术学院CSDN学院PHP方向版权所有
copyright 2011<br>聊天室采用ajax+json技术实现</p>
60. </body>
61. </html>
62. <script language="javascript" type="text/javascript"
src="firefoxEvent.js"></script>
63. <script language="javascript" type="text/javascript"
src="../include/ajax.js"></script>
64. <script language="javascript" type="text/javascript">
65. /*
66. 将用户输入的信息保存到数据库
67. */
68. function sengMsg(){
69.
70. //定义对象
71. var xhr=new XMLHttpRequest();
72. //接受用户输入的内容
73. var msg=$("sendtext").value;
74.
75. //获取当前用户名
76. var user=$("user").value;
77. //定义请求的URL
78. var
url=$$("./sendMsg.php?msg="+msg+"&user="+user+"&r="+Math.random());
79. //打开请求
80. xhr.open("get",url,true);
81.
82. xhr.send(null);
83.
84. $("sendtext").value="";
85. }
86.
87.
88.
89. /*
90. 动态的查询数据库,两秒查询一次
91. */
92. var maxid=0;
93.
94. function getMsg(){
95. //获取当前用户名
96. var user=$("user").value;
97.
98. var url="./getMsg.php";
99. var params="maxid="+maxid+"&user="+user;
100.
101. ajaxget(url,params,getMsgProcess);
102.
103. }
104.
105. function getMsgProcess(xhr){
106.
107. var msgObj=eval("("+xhr.responseText+")");
108. var msg=msgObj.Msgs;
109.