`

jsonlib反序列化map时指定map中对象的类型

阅读更多
一个java对象中的某个固定属性反序列化时指定它的类型很简单:
classMap.put("user", User.class);
jsonCfg.setClassMap(classMap);

如果是一个map对象,map中的key是不确定的,如何指定它的value类型呢?
使用“.*”匹配map中的所有key,如下所示
classMap.put(".*", User.class);
jsonCfg.setClassMap(classMap);

示例如下:
import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;

public class Json2MapTest {
    public static final Log log = LogFactory.getLog(Json2MapTest.class);

    @Test
    public void testJson2Map() {
        Map<String, User> map = new HashMap<String, User>();
        map.put("user0", new User(0,"user0","user0@apusic.com"));
        map.put("user1", new User(1,"user1","user1@apusic.com"));
        String jsonString = JSONObject.fromObject(map).toString();
        JSONObject jsonObj = JSONObject.fromObject(jsonString);
        JsonConfig jsonCfg = new JsonConfig();
        jsonCfg.setRootClass(Map.class);
        Map<String,Class> classMap = new HashMap<String, Class>();
        classMap.put(".*", User.class);
        jsonCfg.setClassMap(classMap);
        Map<String,User> deserializedMap = (Map<String, User>) JSONObject.toBean(jsonObj,new HashMap(),jsonCfg);
        log.debug(deserializedMap.toString());
    }

}


输出结果:
{user0=User [email=user0@apusic.com, id=0, name=user0], user1=User [email=user1@apusic.com, id=1, name=user1]}
分享到:
评论

相关推荐

    json-lib 序列化和反序列化

    在`json-lib`中,序列化是指将Java对象转换成JSON字符串的过程,而反序列化则是将JSON字符串转换回Java对象。以下是对这两个过程的详细说明: 1. **序列化**: - 使用`json-lib`,你可以通过`...

    jsonlib.rar

    1. 类型匹配:在反序列化时,JSONLib会尝试将JSON值映射到Java对象的相应字段,因此需要确保JSON数据的类型与Java对象的字段类型相匹配。 2. 避免循环引用:在处理嵌套的对象或集合时,需避免出现循环引用,否则可能...

    使用json-lib完成json的序列化和反序列化.docx

    json-lib是一个Java库,用于处理JSON数据,支持多种Java对象与JSON之间的转换,包括基本类型、数组、集合、Map以及自定义对象等。本篇主要介绍如何使用json-lib进行JSON的序列化和反序列化。 1. JSON序列化(对象转...

    jsonlib的所有包

    3. **支持多种Java类型**:Jsonlib不仅支持基本的Java类型(如字符串、数字、布尔值等),还支持数组、集合、Map以及自定义Java对象的转换。 4. **处理复杂数据结构**:对于嵌套的JSON对象和数组,Jsonlib提供了...

    JSONlib.rar

    1. **序列化与反序列化**:JSONlib能够将Java对象转换成JSON字符串,同时也可以将JSON字符串解析回对应的Java对象。这对于数据的存储和网络传输特别有用。 2. **支持多种Java类型**:JSONlib支持包括基本类型、数组...

    使用jsonlib需要的jar包

    3. commons-beanutils-1.x.jar:这个库是Apache Commons的一个组件,提供了一些方便操作JavaBean的工具方法,JsonLib在反序列化时可能会用到。 4. commons-collections-3.x.jar:此库包含了一套强大的集合操作工具,...

    Gson和Jsonlib需要的jar包

    - **类型适配器(TypeAdapter)**:自定义序列化和反序列化的逻辑。 - **字段命名策略**:可以自定义字段在JSON中的映射规则。 - **注解支持**:使用`@Expose`注解来控制哪些字段参与序列化和反序列化。 - **日期...

    jsonlib.jar

    5. **序列化与反序列化**:Jsonlib可以将Java对象序列化为JSON,同时也能将JSON反序列化回Java对象。这对于数据持久化或者在网络间传递数据非常有用。 6. **XML与JSON转换**:Jsonlib还提供了XML和JSON之间的转换...

    json lib jdk

    总之,JSON Lib是Java开发中处理JSON数据的一个强大工具,尤其是在JDK 1.5环境下,它提供了稳定和高效的JSON解析和序列化功能。开发者可以借助它轻松地在Java对象和JSON格式之间进行数据转换,提高代码的可读性和...

    Jsonlib.zip

    Jsonlib支持多种类型的Java对象与JSON之间的转换,如Java Bean、Map、List、XML等。其核心功能包括: - **序列化**:将Java对象转化为JSON字符串,便于在网络上传输或存储。 - **反序列化**:将JSON字符串解析为...

    json-lib.jar

    JSON-lib.jar是Java平台上的一个库,用于处理JSON数据,特别适用于Java开发者在他们的应用程序中实现JSON的序列化和反序列化。 在Java中,处理JSON通常涉及两个主要任务:将Java对象转换为JSON字符串(序列化),...

    json和map互转jackson和json-lib两种方式实现和区别

    1. **性能**:Jackson通常被认为比json-lib更快,因为它优化了序列化和反序列化的过程,处理大量数据时更为高效。 2. **API复杂性**:Jackson的API相对简洁,使用`ObjectMapper`可以完成大部分任务。而json-lib的...

    最新json-lib及其依赖库包.rar

    JSON-lib是一个Java库,它允许将Java对象转换为JSON表示,并从JSON文本反序列化回Java对象。这个“最新json-lib及其依赖库包.rar”文件包含的是最新的json-lib版本及其必要的依赖库,确保了在开发过程中能够顺利地...

    简单数据传输对象 json-lib 及源文件

    JSON-lib是一个Java库,它提供了将Java对象转换为JSON表示以及从JSON文本反序列化回Java对象的功能。这个库使得在Java环境中处理JSON变得更加方便。 **1. JSON-Lib的用途** JSON-Lib主要服务于以下目的: - **Java...

    jsonlib和所有依赖库

    5. JSON字符串的序列化与反序列化:`JSONObject.toString()`和`JSONArray.toString()`可以将JSON对象转换为字符串,而`JSONSerializer.toJSON()`则可以从JSON格式的字符串中还原JSON对象。 6. JSON与其他格式的互换...

    json lib 开发包

    1. **Java对象到JSON的转换**:json-lib可以将Java的Bean、Map、Collection、数组等类型的数据转换成JSON格式的字符串。这使得开发者能够轻松地将后端的数据以JSON形式传递给前端。 2. **JSON到Java对象的反向转换*...

    json-lib-2.2.2-jdk15.jar

    1. **JSON序列化与反序列化**:json-lib允许将Java对象转换为JSON字符串,反之亦然。例如,你可以将一个Java的HashMap转换成JSON格式,便于在网络上传输,或者将接收到的JSON字符串解析成Java对象,便于进一步处理。...

    服务器端 json lib包

    3. **序列化JSON**:将JSON对象转换回字符串,可以使用`JSON.toString()`方法,方便在网络间传输或者存储。 4. **XML与JSON转换**:`json-lib`还支持XML和JSON之间的转换,这对于处理来自不同源的数据非常有用。 5...

    json-lib-2.4-jdk15.jar下载

    3. 支持注解:支持@JSON、@JSONIgnore等注解配置对象的序列化和反序列化。 4. 支持流:除了支持对象/JSON与字符串的相互转换,也支持与InputStream/OutputStream的相互转换,处理大数据时比较有用。 5. 无依赖:json-lib...

    JSON-lib

    这将保留原始Map中的键作为JSON对象的键,而值则根据类型转化为相应的JSON值。 3. **Collection到JSON**:JSON-lib也支持将List或Array转换为JSON数组。例如,`JSONArray.fromObject(List)`或`JSONArray.fromObject...

Global site tag (gtag.js) - Google Analytics