彩世界开奖app官网-彩世界平台官方网址(彩票平台)
做最好的网站
来自 彩世界平台官方网址 2019-11-28 06:11 的文章
当前位置: 彩世界开奖app官网 > 彩世界平台官方网址 > 正文

JSON 数据格式介绍_json_脚本之家彩世界平台官方网

1,基础 那篇小说讲的比较中肯,所以不用本身为蛇画足了,只是上面这段代码很好的身先士卒了JSON如哪管理字符串数据,保存下来备查: zt from: 将 String 对象编码为 JSON 格式时,只需管理好特殊字符就可以。其它,必得用 表示字符串: 复制代码 代码如下: static String string2Json { StringBuilder sb = new StringBuilder; sb.append; for ; i ) { char c = s.charAt { case '"': sb.append; break; case '\': sb.append; break; case '/': sb.append; break; case 'b': sb.append; break; case 'f': sb.append; break; case 'n': sb.append; break; case 'r': sb.append; break; case 't': sb.append; break; default: sb.append; } } sb.append; return sb.toString(); } 2,在PHP中的应用。 PHP中使用json_encode和json_decode来开展JSON封装和拆卸与拼装。 封装string类型数据:json_encode在输出结果中,会在源字符串两端加上,结果是 封装stdClass对象类型数据:举例有个"value”成员内容是字符串,结果是:{"value":"u5e7fu4e1cu4f53u80b2,CCTV5"} 3,为啥要写这几个。 ZenTaoPHP框架中,诉求类型假如是“json”,输出结果会以JSON格式封装,但在对输出消息进行深入深入分析时,发掘并非职业的JSON格式。 查究后,开采ZenTaoPHP对部分数据开展了一回JSON封装,输出临近:"{"value":"\u5e7f\u4e1c\u4f53"}" 那样的结果。

复制代码 代码如下:

static String map2Json(Map<String, Object> map) {
if (map.isEmpty())
return "{}";
StringBuilder sb = new StringBuilder(map.size() << 4);
sb.append('{');
Set<String> keys = map.keySet();
for (String key : keys) {
Object value = map.get(key);
sb.append('"');
sb.append(key);
sb.append('"');
sb.append(':');
sb.append(toJson(value));
sb.append(',');
}
// 将最终的 ',' 变为 '}':
sb.setCharAt(sb.length()-1, '}');
return sb.toString();
}

复制代码 代码如下:

static String string2Json(String s) {
StringBuilder sb = new StringBuilder(s.length() 20);
sb.append('"');
for (int i=0; i<s.length(); i ) {
char c = s.charAt(i);
switch (c) {
case '"':
sb.append("\"");
break;
case '\':
sb.append("\\");
break;
case '/':
sb.append("\/");
break;
case 'b':
sb.append("\b");
break;
case 'f':
sb.append("\f");
break;
case 'n':
sb.append("\n");
break;
case 'r':
sb.append("\r");
break;
case 't':
sb.append("\t");
break;
default:
sb.append(c);
}
}
sb.append('"');
return sb.toString();
}

Boolean 类型也得以一贯通过 toString() 方法得到 JSON 的表示:

复制代码 代码如下:

static String boolean2Json(Boolean bool) {
return bool.toString();
}

固然有过多宣传有关 XML 怎么样具有跨平台,跨语言的优势,不过,除非采纳于 Web Services,不然,在日常的 Web 应用中,开垦者常常为 XML 的剖析伤透了脑筋,无论是服务器端生成或管理 XML,依旧顾客端用 JavaScript 深入剖析 XML,都平时导致复杂的代码,十分的低的支出成效。实际上,对于大好些个 Web 应用来讲,他们一向没有必要复杂的 XML 来传输数据,XML 的扩张性非常少具备优势,大多 AJAX 应用以致平昔回到 HTML 片段来营造动态 Web 页面。和重回 XML 并解析它相比,再次回到 HTML 片段大大减弱了系统的冗杂,但还要缺少了必然的灵活性。
到现在, JSON 为 Web 应用开辟者提供了另风流浪漫种数据沟通格式。让大家来拜会 JSON 到底是什么,同 XML 或 HTML 片段相比较,JSON 提供了更加好的轻松性和灵活性。
Ajax 能源中央 请访问 Ajax 财富宗旨,那是有关 Ajax 编制程序模型音讯的一站式核心,包蕴不少文书档案、教程、论坛、blog、wiki 和资源信息。任何 Ajax 的新消息都能在那找到。
JSON 数据格式拆解深入分析
和 XML 相似,JSON 也是根据纯文本的数量格式。由于 JSON 天生是为 JavaScript 寻思的,因此,JSON 的数码格式特轻便,您能够用 JSON 传输二个简约的 String,Number,Boolean,也得以传输多个数组,或然三个千头万绪的 Object 对象。
String,Number 和 Boolean 用 JSON 表示非常轻便。例如,用 JSON 表示一个简练的 String “ abc ”,其格式为:
"abc"
除外字符 ",,/ 微风度翩翩部分调整符(b,f,n,r,t卡塔 尔(阿拉伯语:قطر‎必要编码外,其余 Unicode 字符能够一向出口。下图是三个 String 的意气风发体化表示布局:
图 1. String 的完好表示构造
多个 Number 能够依附整型或浮点数表示如下:
图 2. Number 的意味结构
那与多数编程语言的代表方法大器晚成致,举个例子:
12345(整数)
-3.9e10(浮点数)
Boolean 类型表示为 true 或 false 。别的,JavaScript 中的 null 被代表为 null,注意,true、false 和 null 都未有双引号,不然将被视为一个 String 。
JSON 还足以代表一个数组对象,使用 [] 包蕴全数因素,种种成分用逗号分隔,成分得以是即兴的 Value,举个例子,以下数组包括了三个 String,Number,Boolean 和贰个 null:
["abc",12345,false,null]
Object 对象在 JSON 中是用 {} 满含大器晚成雨后苦笋冬天的 Key-Value 键值对代表的,实际上此处的 Object 也正是 Java 中的 Map<String, Object>,并非 Java 的 Class 。注意 Key 只可以用 String 表示。
比如说,二个 Address 对象包括如下 Key-Value:
city:Beijing
street:Chaoyang Road
postcode:100025(整数)
用 JSON 表示如下:
{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
里头 Value 也能够是另三个 Object 恐怕数组,因而,复杂的 Object 能够嵌套表示,举个例子,一个 Person 对象包蕴 name 和 address 对象,能够象征如下:
{"name":"Michael","address":
{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
}
JavaScript 处理 JSON 数据
上边介绍了哪些用 JSON 表示数据,接下去,大家还要排除哪些在劳务器端生成 JSON 格式的数目以便发送到客商端,以致顾客端怎么着运用 JavaScript 管理 JSON 格式的数码。
咱俩先斟酌哪些在 Web 页面中用 JavaScript 管理 JSON 数据。大家经过三个简易的 JavaScript 方法就会看见客户端怎样将 JSON 数据表示给顾客:
function handleJson() {
var j={"name":"Michael","address":
{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
};
document.write(j.name);
document.write(j.address.city);
}
假使服务器重临的 JSON 数据是上文的:
{"name":"Michael","address":
{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
}
只需将其赋值给叁个 JavaScript 变量,就足以致时使用该变量并更新页面中的消息了,比较 XML 要求从 DOM 中读取各样节点来讲,JSON 的行使特别轻巧。我们必要做的无非是发送七个 Ajax 乞求,然后将服务器重临的 JSON 数据赋值给三个变量就可以。有过多 Ajax 框架已经包蕴了拍卖 JSON 数据的技能,比如 Prototype(二个风靡的 JavaScript 库: evalJSON() 方法,能从来将服务器再次回到的 JSON 文本产生八个 JavaScript 变量:
new Ajax.Request("", {
method: "get",
onSuccess: function(transport) {
var json = transport.responseText.evalJSON();
// TODO: document.write(json.xxx);
}
});
劳动器端输出 JSON 格式数据 上面咱们商量哪些在服务器端输出 JSON 格式的数额。以 Java 为例,大家将演示将一个 Java 对象编码为 JSON 格式的文书。
将 String 对象编码为 JSON 格式时,只需管理好特殊字符就可以。此外,必需用 (") 而非 (') 表示字符串:

response.setContentType("application/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter pw = response.getWriter();
pw.write(JsonUtil.toJson(obj));
pw.flush();

大家并未对 Java 对象作严酷的检查。不被帮衬的目的(比方 List卡塔 尔(阿拉伯语:قطر‎将一贯抛出 RuntimeException 。其余,为了确认保证输出的 JSON 是实用的,Map<String, Object> 对象的 Key 也不可能富含特殊字符。精心的读者或者还有大概会意识循环引用的对象会引发无限递归,比如,精心组织贰个生生不息援用的 Map,就足以检查实验到 StackOverflowException: 

复制代码 代码如下:

static String array2Json(Object[] array) {
if (array.length==0)
return "[]";
StringBuilder sb = new StringBuilder(array.length << 4);
sb.append('[');
for (Object o : array) {
sb.append(toJson(o));
sb.append(',');
}
// 将最终增多的 ',' 变为 ']':
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}

要将数组编码为 JSON 格式,能够由此巡回将每七个因素编码出来:

static String number2Json(Number number) {
return number.toString();
}

public static String toJson(Object o) {
if (o==null)
return "null";
if (o instanceof String)
return string2Json((String)o);
if (o instanceof Boolean)
return boolean2Json((Boolean)o);
if (o instanceof Number)
return number2Json((Number)o);
if (o instanceof Map)
return map2Json((Map<String, Object>)o);
if (o instanceof Object[])
return array2Json((Object[])o);
throw new RuntimeException("Unsupported type: " o.getClass().getName());
}

复制代码 代码如下:

幸好服务器管理的 JSON 数据最后都应当转变为简易的 JavaScript 对象,因而,递归引用的恐怕比十分的小。
说起底,通过 Servlet 或 MVC 框架输出 JSON 时,供给安装科学的 MIME 类型(application/json卡塔尔和字符编码。假定服务器使用 UTF-8 编码,则能够动用以下代码输出编码后的 JSON 文本:

复制代码 代码如下:

复制代码 代码如下:

XML 如何具备跨平台,跨语言的优势,不过,除非采取于 Web Services,否则,在平凡的 Web 应用中,开辟者常常为 XML 的解...

最终,我们需求将 Map<String, Object> 编码为 JSON 格式,因为 JavaScript 的 Object 实际上对应的是 Java 的 Map<String, Object> 。该办法如下:

@Test(expected=StackOverflowError.class)
public void testRecurrsiveMap2Json() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("key", map);
JsonUtil.map2Json(map);
}

小结
JSON 已是 JavaScript 标准的后生可畏部分。如今,主流的浏览器对 JSON 帮衬都特别全面。应用 JSON,我们得以从 XML 的分析中脱身出来,对那个使用 Ajax 的 Web 2.0 网址以来,JSON 确实是当前最灵敏的轻量级方案。

为了统豆蔻年华管理率性的 Java 对象,我们编辑二个入口方法 toJson(Object),能够将随便的 Java 对象编码为 JSON 格式:

将 Number 表示为 JSON 就便于得多,利用 Java 的多态,大家能够拍卖 Integer,Long,Float 等各样 Number 格式:

复制代码 代码如下:

本文由彩世界开奖app官网发布于彩世界平台官方网址,转载请注明出处:JSON 数据格式介绍_json_脚本之家彩世界平台官方网

关键词: 脚本 json 数据格式 之家