2014-08-27 3 views
0

Я использую Jackson для создания объекта json, а затем возвращаю их клиенту, используя ajax или как значение атрибута в Html dom.JsonGenerator: нежелательная двойная кавычка

Это, как я создаю мой 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 как beeing-строку, а остальные - нет. версия Аякса:

"customer": {"idCustomer": 1,"name": "cu1"} 

Когда JSON строка в HTML:

"customer": {"idCustomer": 1,"name": "\"cu1\""} 

Примечание нежелательная \»в HTML версии

Почему эта разница и как избежать этого.? Благодаря

Edit:. @Salem

Это код, в котором я реализую json в html. Это пьеса код шаблона framowork:

<div content="@structure.getContent"> 
</div> 
+0

Пожалуйста, добавьте часть кода, в которой вы печатаете это значение на своей странице html. – Salem

+0

@Salem Я сделал это. – Moebius

+0

Попробуйте использовать '@Html (structure.getContent)' вместо – Salem

ответ

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(); 
    } 
} 
0

"\"" Удалить полностью и посмотреть, что происходит. Если я помню, как правильно это сделал, он должен работать так, как вы хотите. Если значение comp.infos.nameCompany имеет тип String, оно должно автоматически добавлять котировки

+0

Я ответил вам: http://stackoverflow.com/a/25529581/2482582 – Moebius

0

@Lucas Спасибо за вашу помощь, но comp.infos.nameCompany - это строка.

Если я удалить + "\"», HTML-версия верна:

"customer": {"idCustomer": 1,"name": "cu1"} 

Но теперь Аякса версия:.

"customer": {"idCustomer": 1,"name": cu1} 

Это даже не правильный JSON Независимо от того, что у меня есть еще одна двойная кавычка в html-версии.

+0

или, возможно, попробуйте заменить '' \ "" 'на' '' (одинарная кавычка) (если одинарные кавычки подходят для вас). Если нет, Из-за идей – Lucas

+0

@ Лукас Использование одной кавычки не является решением. Спасибо в любом случае. – Moebius

Смежные вопросы