`
lan13217
  • 浏览: 497673 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

对象 数据自定义Json序列号

 
阅读更多
import java.io.IOException;  
import java.text.SimpleDateFormat;  
import java.util.Date;  
import org.codehaus.jackson.JsonGenerator;  
import org.codehaus.jackson.JsonProcessingException;  
import org.codehaus.jackson.map.JsonSerializer;  
import org.codehaus.jackson.map.SerializerProvider;  
  
/** 
 *  java日期对象经过Jackson库转换成JSON日期格式化自定义类 
 * @author godfox 
 * @date 2010-5-3 
 */  
public class CustomDateSerializer extends JsonSerializer<Date> {  
  
        @Override  
        public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {  
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");  
                String formattedDate = formatter.format(value);  
                jgen.writeString(formattedDate);  
        }  
}  



public static class CustomSerializer2 extends JsonSerializer<Region> {
		@Override
		public void serialize(Region region, JsonGenerator jgen, SerializerProvider provider) throws IOException,
				JsonProcessingException {
			Map<String, Object> data = Maps.newHashMap();
			data.put("id", region.getId());
			data.put("name", region.getName());
			// ... more
			jgen.writeObject(data);
		}
	}



@Entity  
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)  
@JsonAutoDetect  
/** 
* 在此标记不生成json对象的属性,这里我标记了两个属性一个hibernateLazyInitializer属性,为什么要标记这个 
* 属性参考前面的博文,一个password属性,出于安全这个当然不能转换成json对象了,毕竟json是在前台调用的, 
* 如果你想转换的时候忽略某个属性,可以在后面继续加上 
*/  
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "password"})  
public class User  
{  
    private Long id;  
    private String name;  
    private String password;  
    private String email;  
    private Date createAt;  
    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)  
    public Long getId() {  
        return id;  
    }  
  
    public void setId(Long id) {  
        this.id = id;  
    }  
    /** 
    * 转换日期对象的输出格式,CustomDateSerializer 代码参考前面的博文     
        */  
    @JsonSerialize(using = CustomDateSerializer.class)  
    public Date getCreateAt() {  
            return createAt;  
    }  
  
    public void setCreateAt(Date createAt) {  
            this.createAt = createAt;  
    } 

    @JsonSerialize(using = CustomSerializer2.class)
    public List<Region> getRegions() {  
            return this.regions;  
    } 
    /** 
    * 其他的getter和setter省略 
    */  
}  
分享到:
评论

相关推荐

    JSON完整使用教程

    JSON采用了键值对(key-value)的形式来存储数据,其中键(key)的取值类型必须是字符串(String),而值(value)的取值类型则可以是字符串(String)、布尔值(Boolean)、数字(Number)、数组(Array)、对象(Object)或者null。...

    对话框序列号例程serialize

    在C++中,实现序列化通常涉及到自定义的序列化和反序列化函数,这些函数会遍历对话框中的各个控件,读取其值并将其保存到文件或内存中,然后在需要时再读取这些数据并恢复对话框的状态。 在实际应用中,对话框序列...

    通过Kettle自定义jar包供javascript使用

    标题中的“通过Kettle自定义jar包供javascript使用”指的是在Kettle数据转换或工作流中,如何创建自己的Java类并将其打包成jar文件,以便于JavaScript脚本在Kettle环境中调用这些自定义的方法。这通常是为了解决...

    Unity 数据本地存储插件-Easy Save 3.3.2版本

    在Unity中,这个过程通常涉及到将游戏对象、脚本字段等转换为JSON、XML或二进制格式。`Easy Save`支持几乎任何类型的数据,包括自定义类、数组、列表以及Unity的特殊类型,如GameObject和Transform,这使得开发者...

    xml序列化和反序列化 c#

    - **数据持久化**:序列化可以将对象状态保存到文件,方便下次使用时快速恢复。 - **网络传输**:在网络通信中,XML序列化和反序列化能有效减少数据交换的复杂性。 4. **自定义XML序列化行为** - **属性控制**:...

    多功能平台数据协议.rar_c#平台_多功能协议

    4. 实现编码和解码:在C#中,可以使用Stream类来读写数据,结合序列化技术(如JSON或XML)将对象转换为字节流,反之亦然。 5. 错误处理和容错机制:为了确保系统的健壮性,需要考虑如何处理网络中断、数据丢失等...

    base64转Mp4工具.zip

    在描述中提到的JSON对象需要包含以下字段: 1. `video`:这是主要的字段,它包含Base64编码的视频数据。 2. `label`:可能用于标记或描述转换后的MP4文件,例如视频的标题或者元数据。 3. `time`:可能是指视频的时...

    dataTables java后台解析http请求参数demo

    此外,前端与后端的交互还可能涉及数据格式的转换,例如将Java对象序列化为JSON格式,这通常通过Jackson或Gson等库来实现。同时,为了确保安全性,还需要考虑防止SQL注入等问题。 总结起来,"datatables java后台...

    jquerydatatable服务器端分页实现方法[借鉴].pdf

    - 这是自定义的服务器数据获取函数,它接收三个参数:`sSource`(与`sAjaxSource`相同),`aoData`(包含用户请求的详细信息的JSON对象),以及`fnCallback`(用于处理服务器响应的回调函数)。 - 在这个函数中,...

    TCP报文段发送接收模拟

    根据业务需求,可能需要对数据进行解析,如JSON、XML或自定义格式。 5. **关闭连接**:当通信完成后,客户端和服务器都需要关闭Socket和ServerSocket,释放资源。客户端调用Socket的close()方法,服务器端调用...

    前端开源库-ripple-lib-transactionparser

    TransactionParser通过解析这些JSON对象,将原始的交易数据转化为具有明确语义的结构,如账户余额变化、支付路径、交易费用等。这样做不仅可以简化开发者的代码逻辑,还能提高应用的可维护性和用户体验。 **核心...

    Routor.rar

    1. **消息头**:消息头通常包含了消息类型、长度、序列号等元信息,用于标识和解析不同的消息类型,以及确保数据完整性的校验和。 2. **消息体**:消息体携带实际的业务数据,根据需求可能采用不同的编码格式,如...

    ControlAPI.rar

    例如,可以使用固定长度的头部来标识消息类型、长度等元数据,然后是可变长度的主体内容,最后可能加上校验和或序列号以检测错误或防止数据混淆。 在“ControlAPI.rar”这个压缩包中,很可能是包含了实现以上功能的...

    局域网QQ的开源代码

    6. **数据可靠性**:尽管UDP本身不保证数据的可靠传输,但在局域网QQ的设计中,可以通过自定义序列号、确认机制、重传策略等手段来增加数据的可靠性。 7. **用户身份验证与加密**:局域网内的通讯可能涉及用户隐私...

    ASP.NET XML Serializer

    ASP.NET XML Serializer是一个强大的工具,它允许开发人员在ASP.NET应用程序中将对象转换为XML格式的字符串,也可以将XML数据还原回原来的对象形式。这个功能对于数据交换、存储和网络传输非常有用,尤其是在Web服务...

    phonegap插件开发(获取第三方应用,打开第三方应用,判断第三方应用程序是否正在运行,获取手机全球唯一序列号,判断文件是否存在)

    例如,你可以编写一个插件来查询系统中安装的应用信息,并通过JSON或其他数据格式返回到JavaScript层。 接着,我们讨论如何打开第三方应用。这涉及到操作系统的URL Scheme或者Intent机制。在iOS上,你可以使用`...

    Unity-UDP异步通信服务端封装

    Unity支持多种序列化方式,如JSON、BinaryFormatter或自定义的序列化方法。消息序列化是将对象转换为可发送的字节流,而反序列化则是将接收到的字节流还原为对象。 `Program.cs`通常是服务端的主程序入口,它负责...

    WPF开发UDP通信源码

    - UDP不保证数据顺序或完整性,因此在客户端和服务端之间发送的数据通常需要进行封装,包括序列化(如JSON或protobuf)以及添加包头以包含序列号、校验和等信息,以便检测和恢复错误。 5. **异常处理**: - UDP...

    基于socket的即时通信

    常见的编码方式有JSON、XML或自定义的二进制格式。 3. 数据发送与接收:使用Socket对象的send方法发送数据,recv方法接收数据。需要注意的是,TCP可能会一次接收多个数据包,或者多次接收一个数据包,需要正确处理...

Global site tag (gtag.js) - Google Analytics