java 中关于json的使用方法
json在数据传输起了很大的作用,下面说说java中json的使用方法。
文章参考:http://www.codes51.com/article/detail_99574.html
json串示例
[{"id":1,"name":"name1","password":"password1","remark":"remark1"},{"id":2,"name":"name2","password":"password2","remark":"remark2"},{"id":3,"name":"name3","password":"password3","remark":"remark3"}]
主要分为以下几种:
1. 直接构建json串,主要代码;
2. json串 -> java对象;
3. java对象 -> json串/json对象;
4. List<?> -> json串;
5. 对象数组 -> json串。
程序如下:
TestJson.java
Java代码 收藏代码
import java.util.*;
import net.sf.json.*;
import com.hs.sig.ui.sgms.vo.User;
public class TestJson {
/**
* 初始化userList大小
*/
public static final int USERLISTSIZE = 3;
/**
* 直接构建json串
* @return
*/
public String toJsonString() {
// 初始化 User 对象
User user = null;
List<User> userList = this.initUserList(USERLISTSIZE);
// 构建 json 串
StringBuffer json = new StringBuffer();
json.append("[");
for (int i = 0; i < userList.size(); i++) {
user = userList.get(i);
json.append("{");
json.append("\"id\":\"").append(user.getId()).append("\",");
json.append("\"name\":\"").append(user.getName()).append("\",");
json.append("\"password\":\"").append(user.getPassword()).append("\",");
json.append("\"remark\":\"").append(user.getRemark()).append('"');
json.append("},");
}
json.deleteCharAt(json.lastIndexOf(","));
json.append("]");
//System.out.println("直接构建 json 串结果:" + json.toString());
return json.toString();
}
/**
* json串 -> java对象
* @return
*/
public String jsonToObject() {
StringBuffer info = new StringBuffer();
if(this.isArray(this.toJsonString())){
JSONArray jSONArray = JSONArray.fromObject(this.toJsonString());
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode(JsonConfig.MODE_LIST);
jsonConfig.setRootClass(User.class);
List<User> userList = (List<User>) JSONSerializer.toJava(jSONArray, jsonConfig);
User user = null;
for (int i = 0; i < userList.size(); i++) {
user = userList.get(i);
info.append("user" + (i + 1) + ".id=" + user.getId());
info.append(",user" + (i + 1) + ".name=" + user.getName());
info.append(",user" + (i + 1) + ".password=" + user.getPassword());
info.append(",user" + (i + 1) + ".remark=" + user.getRemark());
info.append("\n");
}
//System.out.println("json串 -> java对象:" + info.toString());
}
return info.toString();
}
/**
* java对象 -> json串/json对象
* @return
*/
public String objectToJson() {
// 初始化一个user对象
User user = null;
List<User> userList = this.initUserList(USERLISTSIZE);
user = userList.get(0);
// 转换user对象的配置
JsonConfig jsonConfig = new JsonConfig();
// 过滤对象中不需要转化的属性
jsonConfig.setExcludes(new String[]{"id"});
// 将对象user转化为json串
JSONArray jsonArray = JSONArray.fromObject(user, jsonConfig);
//jsonArray = JSONArray.fromObject(user);
// 转化为json对象
//JSONObject jsonObject = JSONObject.fromObject(user, jsonConfig);
//jsonObject = JSONObject.fromObject(user);
return jsonArray.toString();
}
/**
* List<User> -> json串
* @return
*/
public String listToJson(){
List<User> userList = this.initUserList(USERLISTSIZE);
// list转换为JSON串
JSONArray jsonArray = JSONArray.fromObject(userList);
//System.out.println("List<User> -> json串:" + jsonArray.toString());
return jsonArray.toString();
}
/**
* 对象数组 -> json串
* @return
*/
public String arrayToJson() {
List<User> userList = this.initUserList(USERLISTSIZE);
User[] userArray = new User[userList.size()];
for(int i = 0 ; i < userList.size() ; i++){
userArray[i] = userList.get(i);
}
// user数组转为json串
JSONArray jsonArray = JSONArray.fromObject(userArray);
//System.out.println("对象数组 -> json串:" + jsonArray.toString());
return jsonArray.toString();
}
/**
* 初始化用户
* @param userListSize list 的大小
* @return
*/
private List<User> initUserList(int userListSize) {
User user = null;
List<User> userList = new ArrayList<User>();
for (int i = 0; i < userListSize; i++) {
user = new User();
user.setId(i + 1);
user.setName("name" + (i + 1));
user.setPassword("password" + (i + 1));
user.setRemark("remark" + (i + 1));
userList.add(user);
}
return userList;
}
/**
* 判断JSON串是否以"["开头,是则认定为jsonArray,否则认定为jsonObject
* @param str
* @return
*/
private boolean isArray(String str) {
return str.startsWith("[") ? true : false;
}
public static void main(String[] args) {
TestJson testJson = new TestJson();
System.out.println("直接构建json串:" + testJson.toJsonString());
System.out.println("json串 -> java对象:" + testJson.jsonToObject());
System.out.println("java对象 -> json串:" + testJson.objectToJson());
System.out.println("List<User> -> json串:" + testJson.listToJson());
System.out.println("对象数组 -> json串:" + testJson.arrayToJson());
}
}
User.java
Java代码
public class User {
private Integer id;
private String name;
private String password;
private String remark;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
直接构建json串:[{"id":"1","name":"name1","password":"password1","remark":"remark1"},{"id":"2","name":"name2","password":"password2","remark":"remark2"},{"id":"3","name":"name3","password":"password3","remark":"remark3"}]
json串 -> java对象:user1.id=1,user1.name=name1,user1.password=password1,user1.remark=remark1
user2.id=2,user2.name=name2,user2.password=password2,user2.remark=remark2
user3.id=3,user3.name=name3,user3.password=password3,user3.remark=remark3
java对象 -> json串:[{"name":"name1","password":"password1","remark":"remark1"}]
List<User> -> json串:[{"id":1,"name":"name1","password":"password1","remark":"remark1"},{"id":2,"name":"name2","password":"password2","remark":"remark2"},{"id":3,"name":"name3","password":"password3","remark":"remark3"}]
对象数组 -> json串:[{"id":1,"name":"name1","password":"password1","remark":"remark1"},{"id":2,"name":"name2","password":"password2","remark":"remark2"},{"id":3,"name":"name3","password":"password3","remark":"remark3"}]
java 中关于json的使用方法的更多相关文章
- JAVA中使用JSON进行数据传递
最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作. 其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JS ...
- 转载:JAVA中使用JSON进行数据传递
转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html 最近在做一个基于JAVA Servlet的WEB应用以及对应的An ...
- 3、示例(在java中使用JSON)
教程链接(json-smple1.1.1.jar文件) 链接:http://pan.baidu.com/s/1qXPbYHm 密码:v0f0 如何使用java编程语言编码和解码JSON 首先准备环境以 ...
- Java 中extends与implements使用方法
Java 中extends与implements使用方法 标签: javaclassinterfacestring语言c 2011-04-14 14:57 33314人阅读 评论(7) 收藏 举报 分 ...
- Java中的equals和hashCode方法
本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要 ...
- Java中各种(类、方法、属性)访问修饰符与修饰符的说明
类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被本项目的所 ...
- Java中替换HTML标签的方法代码
这篇文章主要介绍了Java中替换HTML标签的方法代码,需要的朋友可以参考下 replaceAll("\\&[a-zA-Z]{0,9};", "").r ...
- java中需要关注的3大方面内容/Java中创建对象的几种方法:
1)垃圾回收 2)内存管理 3)性能优化 Java中创建对象的几种方法: 1)使用new关键字,创建相应的对象 2)通过Class下面的new Instance创建相应的对象 3)使用I/O流读取相应 ...
- Java中字符串的一些常见方法
1.Java中字符串的一些常见方法 /** * */ package com.you.model; /** * @author Administrator * @date 2014-02-24 */ ...
随机推荐
- W3C DOM 事件模型(简述)
1.事件模型 由于事件捕获与冒泡模型都有其长处和解释,DOM标准支持捕获型与冒泡型,能够说是它们两者的结合体.它能够在一个DOM元素上绑定多个事件处理器,而且在处理函数内部,thiskeyword仍然 ...
- OpenGL【2 坐标转换】
// OpenGL.cpp : 自定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include & ...
- Leetcode:maximum_depth_of_binary_tree题解
一. 题目 给定一个二叉树,求它的最大深度.最大深度是沿从根节点,到叶节点最长的路径. 二. 分析 (做到这里发现接连几道题都是用递归,可能就是由于自己时挑的简单的做的吧.) 找出最深 ...
- 深度解析:Android在Mms设置页面更改短信中心号码流程
相关控件初始化方法:showSmscPref private void showSmscPref() { int count = MSimTelephonyManager.getDef ...
- Spring面试问答Top 25
欢迎大家向我推荐你在面试过程中遇到关于Spring的问题. 我会把大家推荐的问题加入到以下的Spring经常使用面试题清单中供大家參考. 问题清单: 什么是Spring框架?Spring框架有哪些主要 ...
- 如何出色的研究 RGSS3 (三) 形式的调整的细节
在一个我们研究了添加到窗体方法的选择,这个问题来研究窗体类的细节. 所有形式的父类的 Window_Base 四个参数需要初始化. #--------------------------------- ...
- swift新手入门视频教程-08-枚举
我自己录制的swift菜鸟入门,大家拍砖,有什么问题能够在这里留言. 主要内容: 枚举语法(Enumeration Syntax) 匹配枚举值与Swith语句(Matching Enumeration ...
- SVN在branch兼并和游戏patch(1)
近期要hadoop2.4关于上面的行hdfs raid,但在此之前hdfs raid如svn 的branch发展,领导人希望patch方式hdfs raid功能进球trunk里面去,这里涉及到svn ...
- requestWindowFeature()应用
我们在开发程序是常常会须要软件全屏显示.自己定义标题(使用button等控件)和其它的需求,今天这一讲就是怎样控制Android应用程序的窗口显示. 首先介绍一个重要方法那就是requestWindo ...
- Linux在iptables教程基本应用防火墙
iptables它是Linux防火墙软件经常使用,下面说一下iptables设备.删除iptables规则.iptables只要打开指定的port.iptables屏蔽指定ip.ip科和解锁.删除添加 ...