`
jayyanzhang2010
  • 浏览: 377915 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JSON解析之JSONObject对象---js对象转换成java对象

阅读更多
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它是大家熟悉的javascript客户端脚本的一个子集。JSON采用完全独立于语言的文本格式,它是一款非常理想的数据交换语言。其中文网站是http://www.json.org/json-zh.html,详细阐述了JSON的概念和数据格式等等,大家如果感兴趣的话可以去浏览一下。

在简要的概述了JSON是什么之后,相信大家也有了一个初步的印象。那么我们下面以一个简单的示例来了解一下JSON如何使用。今天我们示例的主角是JSON基于java的库包-json-lib.jar中的JSONObject对象,我们今天的例子也就是把javascript对象内的数据透明的绑定到简单的java值对象上。

我们还是依旧以实例为导向,这样理解起来非常容易。我们今天就以一个简单的注册页面(不带数据库,大家可以自己在练习中使用数据库)来贯穿我们今天的内容。(要准备的jar包为json-lib-2.2.2-jdk15.jar,commons-beanutils-1.8.0.jar,commons-collections-3.2.1.jar,commons-lang-2.4.jar,commons-logging-1.1.1.jar,可以去网上下载,
网址:http://json-lib.sourceforge.net/)

首先我们建立一个简单的jsp注册页面,代码片断如下:


<form name="frm" action="convertJava.jsp" method="post">
请输入姓名:<input name="username"><br>
请输入密码:<input type="password" name="password" ><br>
请选择你的性别: <input type="radio" name="sex" value="男" >男

<input type="radio" name="sex" value="女"> 女

请选择爱好:<input type="checkbox" name="love" value="java"> java
<input type="checkbox" name="love" value=".net">.net
<input type="checkbox" name="love" value="php">php
<input type="checkbox" name="love" value="vb">vb<br>
<input type="hidden" name="str" value="" />
<input type="button" value="注册" onclick="run()"/>
</form>

这是我们最常见的表单了,但是这里要注意的是大家在设置表单元素的name属性的时候,要确保和以后你新建的java值对象的属性名相同。

也许大家注意到了,最后注册的按钮控件上有个点击事件--run,run这个函数比较重要,我们主要是用这个函数来把这个表单描述为JSON格式的文本。那么下面我们就来看看run函数的代码片段:


function run()
{

var str="{'username':'"+document.frm.username.value+"','password':'"+document.frm.password.value+"','sex':'";
var radios=document.getElementsByName("sex");
var radiovalue="";
for(i=0;i<radios.length;i++)
{
if(radios.checked==true)
radiovalue=radios.value;
}
str+=radiovalue+"','love':[";
var arraytemp=document.getElementsByName("love");
for(i=0;i {
if(arraytemp.checked==false)
continue;
if(arraytemp.value=="")
continue;
if(i+1==arraytemp.length&&arraytemp.checked==true)
{
str+="'"+arraytemp.value+"']";
break;
}
str+="'"+arraytemp.value+"',";
}
if(str.substring(str.length-1,str.length)==",")
{
str=str.substring(0,str.length-1)+"]";

}
str+="}";
document.frm.str.value=str;
document.frm.submit();
}


这里卖个关子,具体JSON文本格式是怎样的,请大家把以上的代码片段拼起来,在run方法里加上alert(str),就可以在执行run后弹出的对话框中看到JSON文本的格式了。很简单的,如果想完美点,还可以写一个js方法做一下验证。

我们这段run方法的目的也就是为了把表单元素的name属性以及内部包含的值以key=value的键值对的形式描述为一段JSON文本。

紧接着,我们来创建一个简单的java值对象,代码示例为:

package entity;

public class formBean {
private String username;
private String password;
private String sex;
private String[] love;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String[] getLove() {
return love;
}
public void setLove(String[] love) {
this.love = love;
}
}




有了JSON文本和需要绑定的java值对象后,那么我们下一步就是要编写另一个jsp页面convertJava.jsp(当然,你也可以使用servlet),用来把这段文本转换成java对象了。

另一页面,如: 代码片段如下:

request.setCharacterEncoding("GBK");
String jsobject = request.getParameter("str");// 这个是jsp页面传过来的对象字符串
JSONObject js = JSONObject.fromObject(jsobject);// 根据字符串转换对象
formBean bean = (formBean) js.toBean(js, formBean.class); // 把值绑定成相应的值对象
// 下面输出bean的值
response.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=gbk");
out.println(bean.getUsername());
out.println(bean.getPassword());
out.println(bean.getSex());
out.println("bean的love属性为一个数组:");
for (String s : bean.getLove()) {
out.println("bean的数组元素:" + s );
}


通过上面的代码片段,可以了解到JSONObject有用的方法是fromObject(JSON文本)[用于讲JSON文本创建一个JSONObject实例]和toBean(带有JSON文本的JSONObject对象,你要绑定的java值对象类型.class)[用于把JSON文本转换成java对象]

至此,你就可以利用这个简单的java值对象了,不再用request的getParameter方法一一获取参数值,然后再使用java值对象的setter方法一一设置属性值这么麻烦了。也许刚开始构造JSON对象文本的时候有一些麻烦,但是这些麻烦对于你来说不过是小菜一碟,对吗?
分享到:
评论

相关推荐

    用于java对象与json对象间的相互转换(net.sf.json.JSONObject)

    `fromObject`方法将Java对象转换为`JSONObject`,然后调用`toString()`将其转化为JSON字符串。 ### 进阶使用 - **处理嵌套结构**:`JSONObject`也支持嵌套结构,即JSON对象内包含其他JSON对象或数组。可以通过递归...

    json-lib-2.3-jdk15基础jar包合辑

    JSON Lib是一个Java库,它提供了将Java对象转换为JSON格式,以及将JSON文本解析回等效Java对象的功能。这个库支持多种Java类型,包括基本类型、集合、Map、自定义Java类等,使得在Java应用程序中处理JSON变得简单。 ...

    json-lib-2.4-jdk15.jar

    2. **Java对象到JSON的转换**:json-lib支持将Java对象如HashMap、ArrayList等直接转换成JSON格式,如`JSONObject.fromObject()`和`JSONArray.fromObject()`方法。 3. **JSON到Java对象的反序列化**:反之,它也...

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    json-lib-2.2.3-jdk15.jar

    2. 创建JSON对象:使用JSON-lib提供的方法将Java对象转化为JSON对象,例如使用`net.sf.json.JSONObject`或`net.sf.json.JSONArray`。 3. 序列化和反序列化:通过`fromObject()`和`toObject()`方法将Java对象序列...

    json-lib-2.4-jdk15和全部依赖jar包

    1. **JSON转换**:`json-lib`提供了将Java对象如Map、List、自定义类等转换为JSON字符串的方法,同时也支持将JSON字符串解析为相应的Java对象。这在处理前后端交互或者存储和传输数据时非常有用。 2. **XML与JSON互...

    net.sf.json.JSONObject实现Object对象与Json字符串的互转

    `JSONObject`可以从一个Java对象创建,也可以解析为一个JSON字符串。例如,我们有一个简单的Java对象: ```java public class User { private String name; private int age; // getters and setters } ``` 要...

    json-lib-2.4-jdk15.jar及其相关依赖

    `json-lib`是一个Java库,它提供了一种将Java对象转换为JSON表示,并将JSON数据转换回等效Java对象的方法。`json-lib-2.4-jdk15.jar`是这个库的一个特定版本,适用于JDK 1.5环境。 在Java开发中,`json-lib`库提供...

    多层集合嵌套的JSON数据转化为Java对象(src.zip)

    然后,使用`JSONObject.toBean()`方法将JSON转换为Java对象: ```java MainObject mainObject = (MainObject) JSONObject.toBean(jsonObject, MainObject.class); ``` 这会自动将JSON中的数据填充到对应的Java...

    json-lib-2.3-jdk15开发包和所有依赖包

    例如,你可以将Java Map转换为JSON对象,或者将JSON字符串解析成一个可操作的对象。 2. **JSON数组的处理**:`net.sf.json.JSONArray`类允许你处理JSON数组,可以将Java List转换为JSON数组,或者从JSON文本反序列...

    基于json-lib.jar包 JSONObject-Java常用的四种用法

    在Java编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地读取和编写数据。`json-lib.jar`是一个流行的Java库,用于处理JSON格式的数据,它提供了丰富的API来操作...

    json-lib-2.4-jdk15-sources.jar

    1. **JSON与Java对象之间的转换**:它可以将Java的ArrayList、HashMap、Date、XML等对象转换成JSON格式,反之亦然。这极大地方便了数据交换和持久化。 2. **XML与JSON的互转**:在许多情况下,需要在JSON和XML之间...

    json-lib-2.2.2-jdk15.jar

    例如,你可以将一个Java的HashMap转换成JSON格式,便于在网络上传输,或者将接收到的JSON字符串解析成Java对象,便于进一步处理。 ```java Map, String> map = new HashMap(); map.put("key1", "value1"); map.put...

    org.json.JSONObject 包下载

    这个库由Mozilla Public License提供,广泛应用于需要在Java应用中进行JSON解析、生成和操作的场景。JSON是一种轻量级的数据交换格式,因其简洁明了,易于人阅读和编写,同时也方便机器解析和生成,故在Web服务和...

    json-lib-2.4-jdk15及其依赖jar包

    这个库包含了处理JSON的多种功能,包括将Java对象转换为JSON字符串,以及将JSON文本解析回相应的Java对象。这对于开发人员来说是非常有用的,因为它允许他们在Java程序中轻松地序列化和反序列化数据。 在Java中,...

    java实现http请求以及解析json与java对象转换 项目源代码实例

    2. **JSON解析**: - 创建JSON对象:通过键值对构建JSONObject。 - 创建JSON数组:使用JSONArray存储一系列JSON对象。 - JSON反序列化:将JSON字符串转换为Java对象,如使用Gson的`fromJson()`方法。 - JSON序列...

    json-java对象转换包

    在Java中,为了方便地将Java对象转换为JSON格式以及将JSON字符串解析为Java对象,通常会使用特定的库,如"json-java对象转换包"所提及的json-lib。json-lib是一个Java库,它提供了将Java对象转换为JSON格式,以及将...

    json-lib-2.4-jdk15源码和jar包

    - **对象与JSON之间的转换**:`JSONObject`类可以将Java对象转换成JSON格式的字符串,同时也可以将JSON字符串解析成`JSONObject`实例。同样,`JSONArray`类对应于JSON数组的处理。 - **JSON与XML的互转**:`json-...

    json-lib-2.2.3-jdk15

    例如,你可以将一个Java对象转换为JSON字符串,然后在网络上传输,接收方再将这个字符串解析成对应的Java对象。这种转换过程极大地简化了数据交换的复杂性。 在使用`json-lib-2.2.3-jdk15.jar`时,开发者需要注意...

    json-lib-2.4-jdk15

    这个库提供了将Java对象转换为JSON格式以及将JSON数据解析回Java对象的功能,极大地简化了JSON的处理工作。 1. **json-lib的使用** json-lib 提供了一系列的转换方法,如 `net.sf.json.JSONObject` 和 `...

Global site tag (gtag.js) - Google Analytics