序列化和反序列化Play2 Html对象

时间:2014-05-20 02:22:10

标签: json swagger-play2

我有一个Document案例类。 为了序列化它并对Json文本进行反序列化,我定义了隐式的Reads和Writes对象。

如果我的Document类只包含Int和String,我没有问题。 但是,当我在Document案例类中有一个Html类型值时,我遇到了问题。

它是一个嵌套序列化和反序列化。 我在为Html创建Reader时遇到问题。 Play 2 Html不是案例类。这是一个问题吗?

以下代码是否正确:

implicit object HtmlReads extends play.api.libs.json.Reads[Html] {
       def reads(json: JsValue) = Html (
           (json \ "text").as[String] 
        )
}

它不起作用。 我该怎么办? 感谢

1 个答案:

答案 0 :(得分:0)

这就是我在java中解决这个问题的方法(但我猜它在scala中是一样的): 我创建了一个JsonSerializer类来将一个类转换为一个字符串,然后我将用我的类将这些字段转换为Json。

一个例子,向您展示日期的工作原理:

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.stereotype.Component;

/**
 * Used to serialize Java.util.Date, which is not a common JSON
 * type, so we have to create a custom serialize method;.
 *
 * @author Loiane Groner
 */
@Component
public class JsonDateSerializer extends JsonSerializer<Date>{

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");

    @Override
    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
            throws IOException, JsonProcessingException {
        String formattedDate = dateFormat.format(date);
        gen.writeString(formattedDate);
    }
}

然后我用我的班级声明相应的字段:

public class MyClass
{
    @Formats.DateTime(pattern="dd/MM/yyyy")
    @JsonSerialize(using=JsonDateSerializer.class)
    public Date     myDate;
}

Ainsi,lorsque j&#39;利用mapper.writeValueAsString(lst),j&#39; obtiens des date au format:08-13-2014

我从Loiane Groner复制了来源。