本篇文章给大家谈谈从零开始的json教程学习,以及json 教程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
json如何使用
json一般都是配合ajax一起使用的 我做做过的小例子 粘给你 你可以研究一下
js部分
//获取卡的金额
function get_money(){
var str=document.getElementById(“pk_card_type”).value;
//alert(str);
var url = ‘/member_h.do’;
var pars = ‘method=getMoney’;
pars+=’pk_card_type=’+str;
var ajax = new Ajax.Request(
url,
{method:’post’,parameters:pars,onComplete:show_money}
);
}
//回调函数 写入卡的金额
function show_money(dataResponse)
{
var data = eval(‘(‘ + dataResponse.responseText + ‘)’);
var price=0;
price=data.price;
var collection_fees=0;
collection_fees=data.collection_fees;
document.getElementById(“recharge”).value=price;
document.getElementById(“collection_fees”).value=collection_fees;
}
action部分
public ActionForward getMoney(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
response.setContentType(“text/html; charset=utf-8”);
try {
IElementaryFileService ggsv = new ElementaryFileService();
String pk_card_type = request.getParameter(“pk_card_type”);
Card_TypeVO ctvo=new Card_TypeVO();
ctvo=ggsv.queryByPK(Card_TypeVO.class, pk_card_type);
PrintWriter out = response.getWriter();
// 这里的数据拼装一般是从数据库查询来的
JSONObject jsonObject = new JSONObject();
if(ctvo!=null){
jsonObject.put(“price”, ctvo.getCard_money());
jsonObject.put(“collection_fees”, ctvo.getCash());
}else{
jsonObject.put(“price”, 0);
jsonObject.put(“collection_fees”, 0);
}
out.print(jsonObject.toString());
out.flush();
out.close();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
如何从json中取数据?
只能用循环,代码如下:
[html] view plain copy
var head_id = “”;
var head_pid = “”;
for (var i = 0; i data.head.length; i++) {
head_id += data.head[i].id + ” “; //循环输出json数据
head_pid += data.head[i].pid + ” “;
}
$(“#city”).append(“city:” + head_id);
$(“#city”).append(“province:” + head_pid);
这样,将会在data之后,依次输出json中的数据。
若想有选择性的输出时,需要添加if条件,代码如下:
[html] view plain copy
for (var i = 0; i data.head.length; i++) {
if (data.head[i].pid == “河南省”) { //有选择的输出json数据
head_pid += data.head[i].pid;
}
}
ps:需要注意的是,倘若对象中有多组数据,则用data.head.id是undefined的,因为没有标明是哪组数据,例如data.head[0].id,若对象中只有一组数据,则可以直接用data.head.id输出。
技术基础–JSON-RPC2.0
最近刚加入区块链学习从零开始的json教程学习的热潮从零开始的json教程学习,从一些基本技术开始学起。本文翻译自 JSON-RPC 2.0 Specification . 其实协议很简单,本不需要翻译,主要是为了记录这个学习过程,以及加深理解。
JSON是一种轻量级的数据交换格式。它可以地标数字,字符串,有序数组,以及键值对。
而JSON-RPC是一种无状态的,轻量级的远程程序调用协议。不只一种数据结构及其处理规则可以符合这种定义。数据通过socket, http, 或其从零开始的json教程学习他环境传输,并不能确定其将在本进程内使用。它使用JSON来座位数据格式。
设计也很简单。
关键词“MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL”的解释可以在RFC2119中找到。
由于采用了JSON协议,其可传输的数据类型也和JSON相同。JSON可以表示四种基本类型, Strings, Numbers, Booleans, Null,还有两种结构类型:Objects, Arrays。当我们提到“基本类型”的时候,是指四种基本的JSON类型,而“结构类型”则指代以上两种JSON结构类型。当提到JSON类型时,总会把第一个字母大写,比如Object, Array, String, Number, Boolean, Null. True和False也是如此。
JSON-RPC 2.0定义的请求对象和响应对象和现有的JSON-RPC 1.0客户端/服务器有兼容问题。这两个版本其实很好区分,2.0定义了一个叫”jsonrpc”的成员,其值时2.0,而1.0版本没有。2.0的实现往往要兼容1.0的对象,即使我们在开发点对点以外或者明显不是1.0的业务的时候亦是如此。
RPC调用是指发送一个请求对象到远程服务器上。请求对象包括以下成员:
jsonrpc: 用来声明JSON-RPC协议的版本,固定为“2.0”
method:需要调用的方法。方法名以单词rpc开头,后面跟上期限字符,这个字段在rpc交互的方法及其扩展上被存储起来,并且不能用于其他意义。
params: 结构化的值,用于存储方法响应需要用到的参数,且不能被省略。
id:客户端分配的一个标识符,可以包含字符串,数字或者为空。如果没有id,就会被当成是广播通知。这个值一般不能为Null,且为数字时不能有小数。如果请求中含有这个字段,服务器在响应时,必须原样返回该字段,用来关联以下两个对象的不同环境:
当请求参数中不发送id成员时,该请求会被当作通知处理。对于通知,客户端不关心响应对象,因为服务端也没必要返回响应对象,确切的说,服务端不准答复一个通知请求,即便这个请求是批处理请求中的一个。
根据这个定义,通知请求并不会被确认,因为客户端不会收到响应对象,更进一步说,通知请求的客户端无法感知到错误,比如参数错误/网络错误等。
RPC调用的参数必须是结构化的值(对象或者数组),对象通过名字遍历,而数组通过位置可遍历。
数组参数的遍历顺序必须与服务端顺序一致。
对象参数的成员值必须与服务端期望的一致,且在大小写上精确匹配。一旦有成员缺失,会导致错误产生。
当RPC请求出错时,服务器响应的Response对象中,必须包含error,且包含以下成员:
code: Number类型,表示出错类型
message: String类型 简介的一句话来描述错误
data: 可以是基本类型,也可以是结构类型,来表示错误的额外信息,且可以缺省。具体取值由服务器自定义,比如错误详情,访问限制等等。
-32768到-32000之间的错误码是系统保留错误码,协议预定义方便未来使用。错误码的定义和XML-RPC类似:
-32700: 解析错误,无效的JSON结构,服务器在解析JSON时出错
-32600: 请求无效,Request对象不是一个合法的JSON请求
-32601: 未知的方法,服务器未定义该method,或者该方法不可用
-32602: 参数错误
-32603: 网络错误
-32000–32099: 服务器错误,服务器其他错误的保留错误码
上述区间以外的错误码可在应用开发时使用。
同时发送多个Request对象时, 客户端可以把请求都放到一个数组里一起发送。
服务端收到Request对象数组并处理完成后,应当以数组的形式返回,且数组中包含了响应的请求的Response对象。每一个请求对应一个响应,如果请求是通知的话,则不包含该Response对象。服务端在批处理请求任务时,可以按任何顺序或者并行化处理。
服务端对请求进行批处理时者不是至少长度为1的合法请求对象数组时,服务器响应的对象必须是一个单的Response对象。如果没有Response数组中不包含Response对象,那也不能返回空数组,而应该什么都不返回。
— {“jsonrpc”: “2.0”, “method”: “subtract”, “params”: [42, 23], “id”: 1}
— {“jsonrpc”: “2.0”, “result”: 19, “id”: 1}
— {“jsonrpc”: “2.0”, “method”: “subtract”, “params”: [23, 42], “id”: 2}– {“jsonrpc”: “2.0”, “result”: -19, “id”: 2}
— {“jsonrpc”: “2.0”, “method”: “subtract”, “params”: {“subtrahend”: 23, “minuend”: 42}, “id”: 3}– {“jsonrpc”: “2.0”, “result”: 19, “id”: 3}– {“jsonrpc”: “2.0”, “method”: “subtract”, “params”: {“minuend”: 42, “subtrahend”: 23}, “id”: 4}– {“jsonrpc”: “2.0”, “result”: 19, “id”: 4}
— {“jsonrpc”: “2.0”, “method”: “update”, “params”: [1,2,3,4,5]}
— {“jsonrpc”: “2.0”, “method”: “foobar”}
— {“jsonrpc”: “2.0”, “method”: “foobar”, “id”: “1”}
— {“jsonrpc”: “2.0”, “error”: {“code”: -32601, “message”: “Method not found”}, “id”: “1”}
— {“jsonrpc”: “2.0”, “method”: “foobar, “params”: “bar”, “baz]
— {“jsonrpc”: “2.0”, “error”: {“code”: -32700, “message”: “Parse error”}, “id”: null}
— {“jsonrpc”: “2.0”, “method”: 1, “params”: “bar”}
— {“jsonrpc”: “2.0”, “error”: {“code”: -32600, “message”: “Invalid Request”}, “id”: null}
— [ {“jsonrpc”: “2.0”, “method”: “sum”, “params”: [1,2,4], “id”: “1”}, {“jsonrpc”: “2.0”, “method”]– {“jsonrpc”: “2.0”, “error”: {“code”: -32700, “message”: “Parse error”}, “id”: null}
— []– {“jsonrpc”: “2.0”, “error”: {“code”: -32600, “message”: “Invalid Request”}, “id”: null}
— [1]
— [ {“jsonrpc”: “2.0”, “error”: {“code”: -32600, “message”: “Invalid Request”}, “id”: null}]
— [1,2,3]
— [ {“jsonrpc”: “2.0”, “error”: {“code”: -32600, “message”: “Invalid Request”}, “id”: null}, {“jsonrpc”: “2.0”, “error”: {“code”: -32600, “message”: “Invalid Request”}, “id”: null}, {“jsonrpc”: “2.0”, “error”: {“code”: -32600, “message”: “Invalid Request”}, “id”: null}]
— [
{“jsonrpc”: “2.0”, “method”: “sum”, “params”: [1,2,4], “id”: “1”},
{“jsonrpc”: “2.0”, “method”: “notify_hello”, “params”: [7]},
{“jsonrpc”: “2.0”, “method”: “subtract”, “params”: [42,23], “id”: “2”},
{“foo”: “boo”},
{“jsonrpc”: “2.0”, “method”: “foo.get”, “params”: {“name”: “myself”}, “id”: “5”},
{“jsonrpc”: “2.0”, “method”: “get_data”, “id”: “9”}
]
— [
{“jsonrpc”: “2.0”, “result”: 7, “id”: “1”},
{“jsonrpc”: “2.0”, “result”: 19, “id”: “2”},
{“jsonrpc”: “2.0”, “error”: {“code”: -32600, “message”: “Invalid Request”}, “id”: null},
{“jsonrpc”: “2.0”, “error”: {“code”: -32601, “message”: “Method not found”}, “id”: “5”},
{“jsonrpc”: “2.0”, “result”: [“hello”, 5], “id”: “9”}
]
— [
{“jsonrpc”: “2.0”, “method”: “notify_sum”, “params”: [1,2,4]},
{“jsonrpc”: “2.0”, “method”: “notify_hello”, “params”: [7]}
]
— //Nothing is returned for all notification batches
使用rpc开头的方法名是系统扩展方法,且不能用于其他场合。每一个系统扩展都在相关声明中定义。系统扩展是可选的。
1)如何撰写一个规范,或者说一个规范由哪些部分组成,本规范是一个很好的模版
2)如何做前后兼容。jsonrpc的兼容方式很简单,在请求头部扩展一个jsonrpc的版本号即可。如果是良好的设计,在1.0的时候就应该加上此字段。
3)严谨性。比如,我们不能简单的使用Null作为id参数来表示通知,服务端解析id失败也返回Null的id,无法区分这两种情形。
4)批处理。一个好的设计必然要考虑多任务的批处理,在设计批处理时,需要考虑数据的解析,服务器可能不按序处理,以及可能并发处理,需要考虑不同的请求在不同的时许下处理可能产生的影响
5)举例。和测试用例的设计有点类似,尽可能覆盖全面
JSON-RPC 2.0 Specification
PHP JSON格式数据交互实例代码详解
在PHP中解析JSON主要用到json_encode和json_decode两个PHP
JSON函数,比PHP解析XML方便很多,下面详细介绍下PHP
JSON的使用。
JSON基础介绍
JSON(JavaScript
Object
Notation)
是一种轻量级的数据交换格式。
JSON主要有两种结构:
“名称/值”对的集合,在PHP中可以理解为关联数组
(associative
array)。
值的有序列表(An
ordered
list
of
values)。在PHP中可以理解为普通数组(array)。
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’
对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、
null、对象(object)或者数组(array)。这些结构可以嵌套。
我目前对JSON的理解更偏向于数组,类似于PHP中的关联数组,你可以将PHP数组转换为JSON格式。
更多JSON的介绍请参考JSON官网和IBM关于JSON的介绍
PHP
JSON解析实例
PHP5.2开始已经将JSON作为PHP扩展的一部分,所以并不需要另外安装JSON。另外为了保证下面的PHP
JSON实例不出现中文乱码,请保证你的编码格式为UTF8。
JSON是Javascript的一部分,首先我们看下Javascript中如何定义JSON
复制代码
代码如下:
var
json_obj
=
{‘WebName’:’PHP网站开发教程网’};
alert(json_obj.WebName);
var
json_arr
=[{‘WebName’:’PHP网站开发教程网’,’WebSite’:”},{‘ArtTitle’:’PHP
JSON实例讲解’}]
alert(json_arr[1].ArtTitle);
var
php_json
=
[[‘PHP网站开发教程网’,”],[‘文章标题’,’PHP
JSON实例讲解’]];
alert(php_json[1][0]);
在这段JSON实例代码中我构建了所有的JSON形式,
第1行,定义了JSON以对象形式存在
第4行,定义了JSON以数组形式存在,嵌套了JSON对象,所以有点类似于PHP的关联数组,其实仍然是对象。
第7行,定了JSON以普通数组形式存在。
注意:由于Javascript是区分大小写的,所以访问JSON关联数组对象时注意key的大小写问题。
PHP与JSON格式数据交互时,第一步需要将PHP数组转换为JSON格式的数据,可使用PHP5自带的json_encode函数,当PHP解析传递过来的JSON格式数据时需要使用json_decode函数进行解析转换为PHP数组,PHP转换并解析JSON数据的实例代码如下
复制代码
代码如下:
?php
$json_arr
=
array(‘WebName’=’PHP网站开发教程网’,’WebSite’=”);
$php_json
=
json_encode($json_arr);
echo
$php_json;
$php_json
=
json_decode($php_json);
print_r($php_json);
?
说明:这里通过PHP定义了关联数组,然后通过json_encode转换为JSON格式的数据,通过echo语句可以看到转换后的JSON对象,通过PHP
JSON解析函数json_decode可以将JSON格式的数据解析为PHP的关联数组。如果编码不正确,JSON中文会出现乱码。如果你使用Editplus调试PHP,请注意保存文件时编码将ANSI改为UTF8。
最后我们来看下完整的PHP
JSON交互实例
复制代码
代码如下:
?php
$json_arr
=
array(‘WebName’=’PHP网站开发教程网’,’WebSite’=”);
$php_json
=
json_encode($json_arr);
?
script
type=”text/javascript”
var
php_json
=
?=$php_json?;
/script
script
type=”text/javascript”
function
php_json_dis(php_json)
{
alert(php_json.WebName);
alert(php_json.WebSite);
}
php_json_dis(php_json);
/script
至此,PHP通过json_encode和json_decode函数对JSON格式数据进行转换和解析的实例就介绍完了。
关于从零开始的json教程学习和json 教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。