Josn序列化学习,虽然我只是搬运工~~

原文地址:http://blog.csdn.net/sjiang2142/article/details/6706097

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class MainClass {

	public static void main(String[] args) {
		TestJsonBean();
		TestJsonAttribute();
		TestJsonArray();
	}

	@SuppressWarnings("rawtypes")
	private static void TestJsonArray() {
		Student student1 = new Student();
		student1.setId(1);
		student1.setName("jag");
		student1.setSex("man");
		student1.setAge(25);
		student1.setHobby(new String[]{"篮球","游戏"});

		Student student2 = new Student();
		student2.setId(2);
		student2.setName("tom");
		student2.setSex("woman");
		student2.setAge(23);
		student2.setHobby(new String[]{"上网","跑步"});

		List<Student> list = new ArrayList<Student>();
		list.add(student1);
		list.add(student2);

		JSONArray jsonArray = JSONArray.fromObject(list);
		System.out.println(jsonArray.toString());

		JSONArray new_jsonArray=JSONArray.fromObject(jsonArray.toArray());
		Collection java_collection=JSONArray.toCollection(new_jsonArray);
		if(java_collection!=null && !java_collection.isEmpty())
		{
			Iterator it=java_collection.iterator();
			while(it.hasNext())
			{
				JSONObject jsonObj=JSONObject.fromObject(it.next());
				Student stu=(Student) JSONObject.toBean(jsonObj,Student.class);
				System.out.println(stu.getName());
			}
		}
	}

	private static void TestJsonAttribute() {
		/**
		 * 创建json对象并为该对象设置属性
		 */
		JSONObject jsonObj = new JSONObject();
		jsonObj.put("Int_att",25);//添加int型属性
		jsonObj.put("String_att","str");//添加string型属性
		jsonObj.put("Double_att",12.25);//添加double型属性
		jsonObj.put("Boolean_att",true);//添加boolean型属性
		//添加JSONObject型属性
		JSONObject jsonObjSon = new JSONObject();
		jsonObjSon.put("id", 1);
		jsonObjSon.put("name", "tom");
		jsonObj.put("JSONObject_att",jsonObjSon);
		//添加JSONArray型属性
		JSONArray jsonArray = new JSONArray();
		jsonArray.add("array0");
		jsonArray.add("array1");
		jsonArray.add("array2");
		jsonArray.add("array3");
		jsonObj.put("JSONArray_att", jsonArray);
		System.out.println(jsonObj.toString());
		System.out.println("Int_att:"+jsonObj.getInt("Int_att"));
		System.out.println("String_att:"+jsonObj.getString("String_att"));
		System.out.println("Double_att:"+jsonObj.getDouble("Double_att"));
		System.out.println("Boolean_att:"+jsonObj.getBoolean("Boolean_att"));
		System.out.println("JSONObject_att:"+jsonObj.getJSONObject("JSONObject_att"));
		System.out.println("JSONArray_att:"+jsonObj.getJSONArray("JSONArray_att"));
	}

	/**
	 * java对象与json对象互相转换
	 */
	private static void TestJsonBean() {
		/**
		 * 创建java对象
		 */
		Student student = new Student();
		student.setId(1);
		student.setName("jag");
		student.setSex("man");
		student.setAge(25);
		student.setHobby(new String[]{"篮球","上网","跑步","游戏"});
		/**
		 * java对象转换成json对象,并获取json对象属性
		 */
		JSONObject jsonStu = JSONObject.fromObject(student);
		System.out.println(jsonStu.toString());
		System.out.println(jsonStu.getJSONArray("hobby"));
		/**
		 * json对象转换成java对象,并获取java对象属性
		 */
		Student stu = (Student) JSONObject.toBean(jsonStu, Student.class);
		System.out.println(stu.getName());
		/**
		 * 创建json对象
		 */
		JSONObject jsonObj = new JSONObject();
		jsonObj.put("id",1);
		jsonObj.put("name","张勇");
		jsonObj.put("sex","男");
		jsonObj.put("age",24);
		//jsonObj.put("hobby",new String[]{"上网","游戏","跑步","音乐"});
		//System.out.println(jsonObj.toString());
		/**
		 * json对象转换成java对象
		 */
		Student stud = (Student) JSONObject.toBean(jsonObj,Student.class);
		System.out.println(stud.getName());
	}
}
附:jar---maven引用:原文地址:http://blog.csdn.net/qqqqqq654/article/details/53425775
  • <!--json-lib-->
  • <dependency>
  • <groupId>net.sf.json-lib</groupId>
  • <artifactId>json-lib</artifactId>
  • <version>2.4</version>
  • <classifier>jdk15</classifier>
  • </dependency>
时间: 2024-12-14 18:41:03

Josn序列化学习,虽然我只是搬运工~~的相关文章

thrift c_glib 库序列化学习

thrift c_glib 库序列化学习 最近在项目中需要在不同的语言(c, c++, java, python) 之间传递消息, 模式是 server(C++)需要向订阅者(observer) 发送更新.大致的思路是server侦听某个端口, 然后observer 连接, 然后双方保持连接, 当有更新时, server 将消息下发给observer.由于需要跨语言,所以我们需要一个序列化的库, 项目中之前引入的thrift 正好可以解决, 在需要支持的各种语言中, c语言由于本身没有面向对象,

Hadoop序列化学习笔记(一)

什么是序列化? 序列化(serialization),是指将结构化对象转化为字节流,以便在网络上传输或写入磁盘进行永久存储. 反序列化(deserialization),是指将字节流重新转换为结构化对象. Hadoop使用哪种序列化框架? Hadoop使用自己的序列化格式Writable,除开Writable,Hadoop也支持Avro序列化框架. Writable格式紧凑,速度快.,但很难使用除开Java之外的语言对它进行扩展. Avro支持跨语言使用,意思是,可以用Python写入文件,而用

C# Json 序列化与反序列化二

/// <summary> /// 将对象转换为 JSON 字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="input"></param> /// <returns></returns> public static string ScriptSerialize<T>

C#—序列化(Serialize)和反序列化(NonSerialize)

(转自:http://www.cnblogs.com/Abel-Zhang/p/Serialize.html) 一.概述 序列化是把对象转变成流.相反的过程就是反序列化. 哪些场合用到这项技术呢? 1. 把对象保存到本地,下次运行程序时恢复这个对象. 2. 把对象传送到网络的另一台终端上,然后在此终端还原这个对象. 3. 复制系统的粘帖板中,然后用快捷键Ctrl+V恢复这个对象. 常用的序列化流有Binary(二进制流),XML,SOAP. 二.序列化和反序列化使用事例: 这里我们把序列化和反序

C# 序列化理解 2(转)

一.概述 序列化是把对象转变成流.相反的过程就是反序列化. 哪些场合用到这项技术呢? 1. 把对象保存到本地,下次运行程序时恢复这个对象. 2. 把对象传送到网络的另一台终端上,然后在此终端还原这个对象. 3. 复制系统的粘帖板中,然后用快捷键Ctrl+V恢复这个对象. 常用的序列化流有Binary(二进制流),XML,SOAP. 二.序列化和反序列化使用事例: 这里我们把序列化和反序列化以功能类的形式展现: public class Serializer { //将类型序列化为字符串 publ

Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)

Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系统中是经常为遇到的.我在网上搜索了很久都没有发现很完整的实例或非常好的解决方案,所以我很想和大家讨论一下又什么更好的解决方案. 一旦有更好的方式我会把它集成到模板中实现自动生成.所以很希望得到大家的帮助.在这里我先抛砖引玉了. Demo代码在 https://github.com/neozhu/MVC5-Scaffolder 下载 先看一

在 .NET Core 3.0 中支持 Newtonsoft.Json 的使用

.NET Core 3.0 已经使用了一整套内置的 Josn 序列化/反序列化方案,而且看上去效率还不错.但对于某些项目必须使用到 Newtonsoft.Json 的时候,就会抛出如下异常: System.InvalidOperationException: Property 'JsonResult.SerializerSettings' must be an instance of type 'System.Text.Json.JsonSerializerOptions'. 如果需要在 .NE

.net学习笔记--序列化与反序列化

序列化其实就是将一个对象的所有相关的数据保存为一个二进制文件(注意:是一个对象) 而且与这个对象相关的所有类型都必须是可序列化的所以要在相关类中加上 [Serializable]特性 对象类型包括:对象本神包含的类型,父类 拥有需要的对象之后:1.将对象转换为二进制数据 使用专门的对像进行转换 BinaryFormatter 2.将二进制数据写入到文件 FileSteam 反序列化则是把二进制文件转换为一个对象 例子代码如下: 1 using System; 2 using System.Col

Java序列化的理解与学习

1.什么是Java序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM的生命周期更长.但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象.Java对象序列 化就能够帮助我们实现该功能. 必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量.由此可知,对象序列化不会关注类中的静态变量. 所谓序列化其实就是将程序中的数据(对