JAVA与JSON的序列化、反序列化

package com.linkage.app.memcache;

import java.util.HashMap;
import java.util.Map.Entry;

import net.sf.ezmorph.Morpher;
import net.sf.ezmorph.MorpherRegistry;
import net.sf.ezmorph.bean.BeanMorpher;
import net.sf.json.JSONObject;
import net.sf.json.util.JSONUtils;

import org.apache.taglibs.standard.lang.jpath.example.Person;

import com.linkage.app.vo.admin.ModuleRoleBean;

public class JsonTester {
    public static void main(String[] args) {
        HashMap<String, ModuleRoleBean> map = new HashMap<String, ModuleRoleBean>();

ModuleRoleBean bean = new ModuleRoleBean();
        bean.setComments("fdsafsafsa");
        bean.setModuleId(323);
        bean.setModuleName("zhou");
        // bean.setStateDate(new Date(System.currentTimeMillis()));
        map.put("1", bean);
        map.put("32", bean);

JSONObject jsonObject = JSONObject.fromObject(map);
        String json = jsonObject.toString();
        System.out.println(json);
        System.out.println("################");

JSONObject fromObject = JSONObject.fromObject(json);
        HashMap<String, ModuleRoleBean> retVal = (HashMap<String, ModuleRoleBean>) JSONObject.toBean(fromObject,
                map.getClass());

MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry();
        Morpher dynaMorpher = new BeanMorpher(ModuleRoleBean.class, morpherRegistry);
        morpherRegistry.registerMorpher(dynaMorpher);

for (Entry<String, ModuleRoleBean> entry : retVal.entrySet()) {
            System.out.println("@@" + entry.getKey());
            // System.out.println(entry.getValue().getClass());
            System.out.println("@@" + entry.getValue());
            System.out.println("@@" + morpherRegistry.morph(ModuleRoleBean.class, entry.getValue()));
            System.out.println();
        }
    }
}

JAVA与JSON的序列化、反序列化,布布扣,bubuko.com

时间: 2024-08-25 19:22:27

JAVA与JSON的序列化、反序列化的相关文章

java Serializable和Externalizable序列化反序列化详解--转

一.什么是序列化? “对象序列化”(Object Serialization)是 Java1.1就开始有的特性. 简单地说,就是可以将一个对象(标志对象的类型)及其状态转换为字节码,保存起来(可以保存在数据库,内存,文件等),然后可以在适当的时候再将其状态恢复(也就是反序列化).serialization 不但可以在本机做,而且可以经由网络操作.它自动屏蔽了操作系统的差异,字节顺序等.比如,在 Windows 平台生成一个对象并序列化之,然后通过网络传到一台 Unix 机器上,然后可以在这台Un

.net json数据序列化/反序列化

/// <summary> /// JSON序列化 /// </summary> public static string JsonSerializer<T>(T t) { try { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, t); string

.NET Core protobuf-net、MessagePack、Json.NET序列化/反序列化性能测试

测试代码Zonciu/SerializationTest.cs, 源自neuecc/ZeroFormatterBenchmark.cs. NuGet包及其版本 mgravell/protobuf-net 2.3.2(非官方实现,官方无.NET实现) msgpack/msgpack-cli 1.0.0-beta2(官方实现) neuecc/MessagePack 1.7.2(非官方实现) JamesNK/Newtonsoft.Json 10.0.3 兼容性 protobuf-net 不支持无Con

java io流与序列化反序列化

java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象. 下面是一个实例,通过例子来将以上来简化学习: 1.先创建一个学生类来实现serialization: 1 package com.etc; 2 3 import java.io.Serializable; 4

序列化反序列化的一些可用种类

1.java自带的 2.kryo 3.FST 4.protostuff protobuf的一个缺点是需要数据结构的预编译过程,首先要编写.proto格式的配置文件,再通过protobuf提供的工具生成各种语言响应的代码.由于java具有反射和动态代码生成的能力,这个预编译过程不是必须的,可以在代码执行时来实现.有个protostuff(http://code.google.com/p/protostuff/)已经实现了这个功能. protostuff基于Google protobuf,但是提供了

Json的序列化与反序列化

想想某一天,你在看LOL攻略的时候,系统突然崩溃了,接着浏览器出现了密密麻麻的LOL帐号和密码,你一定在想:"天啊,这次要发财了,说不定里面有超凡号或者王者号,我得赶紧全部记下来."然而说完你就惊呆了,那么多的帐号密码,而且全部写在了Json里面,一个一个复制粘贴要记到什么时候啊...如果这时候我在你身边,我一定会帮助你的,前提是,要分几个王者号给我噢...  言归正传. 上面举的例子虽然有点不太现实,但其实是想和大家说明一个问题,如果要解析Json或XML,请不要使用检索字符串的方式

常用json序列化/反序列化技术对比测试

目前常用的json工具有:1.json-lib:2.jakson-mapper:3.fastjson. 下面对这三种工具的性能进行简单对比测试. 测试样本:一个126K的json文件,内容为json数组. 测试方法:反序列化,读取文件中的json转化为java对象. 测试代码如下: 1 @Test 2 public void testDeserialize() throws Exception { 3 String dealer = "d:\\auto\\json\\100016109.js&q

http请求/restful/序列化反序列化/JSON

1.为什么要实现Serializable (1)将内存中的对象数据存在磁盘中持久化 (2)将对象从一个应用程序发送到另一个应用程序 实现Serializable接口可以把对象序列化为字节流,实现传输必须实现序列化. 使用时将字节流反序列化为对象,应用其创建的副本. 2.为什么网络传输时对象要序列化,而字符串就不用序列化 网络传输需要将对象转换成字节流传输,序列化可以将一个对象转化成一段字节编码,以便在网络上传输或者做存储处理,使用时再进行反序列: 而字符串不用序列化的原因是字符串String是已

使用Newtonsoft.Json.dll序列化和反序列化

关键字:[序列化][反序列化][Json][Newtonsoft.Json] 序列化和反序列化的规则 <1>NewtonSoft只能操作public字段or属性 <2>Json字符串若提供类中没有的字段or属性,反序列化时会忽视之,并不抛出异常 <3>反序列化的过程: 调用无参构造函数,new出一个实例,然后使用Json字符串中包含的字段or属性为成员赋值,Json字符串未提供的字段or属性的值是无参构造函数初始化的值或是0,false,null:若类未提供无参构造函数