我有一个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]
)
}
它不起作用。 我该怎么办? 感谢
答案 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复制了来源。