我使用Jackson创建json对象,然后将它们返回给客户端,无论是使用ajax还是作为Html dom中的属性值。
这就是我创建json字符串的方式:
public void serialize(Customer comp, JsonGenerator gen)
{
gen.writeStartObject();
gen.writeObjectField("idCustomer", comp.idCustomer);
gen.writeObjectField("name", "\"" + comp.infos.nameCompany + "\"");
gen.writeEndObject();
}
问题是这个函数的结果是不同的,它在html或ajax中使用。它看起来像是一次,杰克逊检测到comp.infos.nameCompany是一个字符串,而其他人,它并没有。 ajax版本:
"customer": {"idCustomer": 1,"name": "cu1"}
当这个json字符串在html中时:
"customer": {"idCustomer": 1,"name": "\"cu1\""}
注意不需要的\"在html版本中。
为什么这种差异以及如何避免呢? 感谢。
编辑: @Salem
这是我在html中实现json的代码。这是一个玩framowork模板代码:
<div content="@structure.getContent">
</div>
答案 0 :(得分:0)
完全删除"\""
,看看会发生什么。如果我记得这样做,它应该按你的意愿工作。如果comp.infos.nameCompany
的值是String类型,则应自动添加引号
答案 1 :(得分:0)
@Lucas 感谢您的帮助,但comp.infos.nameCompany是一个字符串。
如果我删除+“\”“,则html版本是正确的:
"customer": {"idCustomer": 1,"name": "cu1"}
但现在ajax版本是:
"customer": {"idCustomer": 1,"name": cu1}
它甚至不是正确的json。 无论我在html版本中还有一个双引号。
答案 2 :(得分:0)
解决方案是使用writeStringField方法而不是writeObjectField:
public class JsonCustomerSerializer extends JsonSerializer<Customer>
{
@Override
public void serialize(Customer comp, JsonGenerator gen, SerializerProvider provider)throws IOException, JsonProcessingException
{
gen.writeStartObject();
gen.writeObjectField("idCustomer", comp.idCustomer);
gen.writeStringField("name", comp.infos.nameCompany);
gen.writeEndObject();
}
}