本篇文章给大家谈谈从零开始的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教程学习(json 教程)插图

如何从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 教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表一休教程网的观点和立场。