前端操作json

 .JSON字符串JSON对象的区别

1. 一个对象以“{”  开始,     “}”结束。   每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:

var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

2. 数组是值(value)的有序集合。一个数组以“[”开始,    “]” 结束。值之间运用 “,”(逗号)分隔。

为了方便地处理JSON数据,JSON提供了json.js包,下载地址:http://www.json.org/json.js一般现在用json2.js。

JSON对象是直接可以使用JQuery操作的格式,和js中的对象一样,可以用对象(类名)点出属性(方法)。

JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用,除非你只想alert();

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

JSON字符串:

var str1 = '{ "name": "cxh", "sex": "man" }';

JSON对象:

var str2 = { "name": "cxh", "sex": "man" };

JavaScript 对象表示法(字面量表示法)。

var book = {};   //创建一个没有属性的对象

var book = {

name : "The Definitive Guide",

"main title" : "JavaScript",      //当属性名中间有空格,或者"-"时,要用引号把属性名括起来

author : {                          //对象的属性也可以是对象

firstname : "Rex",

lastname : "Mai

}

};

看起来都是key-value的键值对,很像js的对象吧?没错,但同时JSON表示不服,我不能跟js的对象长成一样啊,我得有我自己的个性,于是规定键-值对中的键必须用双引号!同时规定键-值对中的值的取值有一定要求:

JSON 值可以是:

数字(整数或浮点数)

字符串(在双引号中)

逻辑值(true 或 false)

数组(在方括号中)

对象(在花括号中)

null

.JSON字符串转换为JSON对象

由JSON字符串转换为JSON对象

Eval()

eval() 的参数是一个字符串。如果字符串表示了一个表达式,eval() 会对表达式求值。如果参数表示了一个或多个 JavaScript 声明, 那么 eval() 会执行声明。

var jsonStr = '{"name": "hanzichi", "sex": "male"}';js自带的方法

var ans = eval('(' + jsonStr + ')');

console.log(ans.name, ans.sex); // hanzichi male

eval 函数非常快,但是它可以编译任何 javascirpt 代码,这样的话就可能产生安全的问题。eval 的使用是基于传入的代码参数是可靠的假设下,有一些情况下,可能客户端是不可信任的。如果基于安全的考虑的话,最好是使用一个JSON解析器(json2.js),一个JSON 解析器将只接受JSON文本,所以是更安全的,如下。

parse(str)

JSON.parse(json字符串 -> json对象)

var jsonStr = '{"name": "hanzichi", "sex": "male"}';

var obj = JSON.parse(jsonStr);

console.log(typeof obj, obj); // object Object {name: "hanzichi", sex: "male"}

parseJSON()

var obj = jQuery.parseJSON('{"name":"John"}');

alert( obj.name === "John" );//由JSON字符串转换为JSON对象jQuery插件支持的转换方式:

然后,就可以这样读取:

Alert(obj.name);

传入一个畸形的JSON字符串会抛出一个异常。比如下面的都是畸形的JSON字符串:

{test: 1} ( test 没有包围双引号)

{'test': 1} (使用了单引号而不是双引号)

另外,如果你什么都不传入,或者一个空字符串、null或undefined,parseJSON都会返回 null 。

注意:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。

三.JSON对象转化为JSON字符串。

stringify(obj);

JSON.stringify(json对象 -> json字符串)

var obj = {name: 'hanzichi', sex: 'male', age: '10'};

var jsonStr = JSON.stringify(obj);

console.log(jsonStr);  // {"name":"hanzichi","sex":"male","age":"10"}

四.读取JSON对象的方法

var str2 = { "name": "haorooms", "sex": "man" };

就可以这样读取:

alert(str2.name);

//弹出” haorooms”。

我们遇到的JSON很少有这么简单的,比如复杂一点的JSON对象如:

var str={"GetUserPostByIdResult":{"Age":"33","ID":"2server","Name":"haorooms"}};

解析用:

alert(str.GetUserPostByIdResult.Name); //弹出haorooms

后端操作Json

Gson对象

Gson有2个最基本的方法
1) toJson() – 转换java 对象到JSON
2) fromJson() – 转换JSON到java对象

HashMap<String, Object> map=new Gson().fromJson(resultJson, HashMap.class);转换为map类型

new Gson().toJson(user).toString()转化为json

向前台发送json字符串

@ResponseBody

public String phoneyanzheng(HttpServletRequest request,HttpServletResponse response)  {

Map<String, Object> map = new HashMap<String, Object>();

map.put("msg", info);info为后台返回的信息

return new Gson().toJson(map);

}

$.ajax({

type : "POST",

dataType: "json",

url : "${ctx}/bbs/login/getCode",

data : $("#userform").serialize(),//userform为表单id

success : function(result) {

alert(result.msg)

}

JSONObject对象

要引入"net.sf.json"包

JSONObject与new Gson()前者侧重于存取后者侧重于转换

JSONObject obj = new JSONObject(resultJson);转化为json

JSONObject o=(JSONObject) obj.get("data");//获取

String info=o.getString("errCode");

JSONObject和JSONArray的区别

区别在于JSONObject是一个{}包裹起来的一个对象(Object),
而JSONArray则是[]包裹起来的一个数组(Array),

往JSONArray中添加JSONObject对象。发现JSONArray跟JSONObject的区别就是JSONArray比JSONObject多中括号[]

jsonObj:{"name0":"zhangsan","sex1":"female"}

jsonArray:[{"name":"xuwei","sex":"male"}]

JSON使用讲解的更多相关文章

  1. golang json用法讲解

    简介 json格式可以算我们日常最常用的序列化格式之一了,Go语言作为一个由Google开发,号称互联网的C语言的语言,自然也对JSON格式支持很好.但是Go语言是个强类型语言,对格式要求极其严格而J ...

  2. AJAX && JSON之讲解

    Ajax技术的核心是XMLHttpRequest对象(简称XHR),可以通过使用XHR对象获取到服务器的数据,然后再通过DOM将数据插入到页面中呈现.虽然名字中包含XML,但Ajax通讯与数据格式无关 ...

  3. jackson读取json tree讲解

    待读取的json文本: {"data":{"count":4031,"list":[{"symbol":"SH ...

  4. 敲-PHP与MySQL,JSON

    hi 敲代码~ 1.php与mysql 5.4 修改界面 同样是界面和程序. 界面article.modify.php <?php require_once('../connect.php'); ...

  5. AngularJS API之toJson 对象转为JSON

    toJson()能把对象序列化为json 方法讲解 这个方法最多支持2个参数: angular.toJson(obj, pretty); obj 是想要转换的对象, pretty 可以调节格式化的样式 ...

  6. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  7. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)

    我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为json,xml等),但是如果Controller的自动序列化后的结果不是我们想要的该 ...

  8. ASP.NET MVC WebApi 返回数据类型序列化控制(json)

    注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/OpenCoder/p/4628557.html 我们都知道在使用WebApi的时候Controller会自动将Acti ...

  9. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

随机推荐

  1. android源码编译时拷贝替换指定文件

    由于要做版本定制,某些版本的资源文件等(例如style.xml)需要不同的配置,但是android的编译开关无法在xml里使用,于是想到了编译时根据不同的编译开关编译不同的文件,如下: 1.建立A.x ...

  2. 记一次springMVC的跨域解决方案

    日期:2019年5月18日 事情原因:由于微信小程序的开发只有测试环境,而后台提供借口的环境是开发环境:两个环境的域名不同,导致前端开发产生了跨域问题: 理论概念: 1.同源策略:同源策略是浏览器的安 ...

  3. easyUi 学习笔记 (二 ) 使用tabs 里datagridview 发送ajax请求 不访问后台的问题

    这个BUG 我花了一个半小时, 还是看不出哪里的问题,  于是就百度到这么一段话,我需要记住 <================================================= ...

  4. Ubuntu 16.04系统启动时卡在:(initramfs)

    背景: 由于不正常的关机和重启,或者突然断电导致的关机,下次起来后不能进去系统,停留在(initramfs). 解决方法: 使用如下命令修复 fsck -y /dev/sda1 说明:其中sda1为系 ...

  5. Linux系统备份还原工具1(DD)(应用实例)

    DD使用教程:http://www.cnblogs.com/EasonJim/p/7442223.html 以下实例没经过大量测试,可能在一些机器上不会有效. 一般围绕以下几点进行设置: 1.dd完后 ...

  6. JSP的异常处理

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/exception-handling.html: 当写JSP代码的时候,有可能会留下一个编码错误,并且它会 ...

  7. 立面图 平面图 剖面图 CAD

    http://www.qinxue.com/88.html http://www.xsteach.com/course/2855 前后左右各个侧面的外部投影图——立面图:对建筑物各个侧面进行投影所得到 ...

  8. tplink wr886n v5.0 ttl 接线方法

    我的倒是有ttl信息,但是全是乱码,换过RX和TX,也换过串口速率都没用,附上TTL接线图. ==================================2016-11-02========= ...

  9. 如何利用神经网络和Python生成指定模式的密码

    今天给大家介绍的是Github上一个名叫PyMLProjects的项目,这个项目的目的是为了训练AI来学习人类构造密码的模式,然后我们就可以用AI来生成大量同一模式或种类的密码了.这种方法也许可以用来 ...

  10. 自己构建的Lumbda表达式

    自己构建的Lumbda表达式 定义接口: package com.stono.lambda; public interface Add { public void add(int x, int y); ...