Вывод JSON с использованием Jackson и PrintWriter - PullRequest
0 голосов
/ 01 июля 2018

Я просто использовал это для моего писателя

response.setContentType("application/json");
        PrintWriter out = response.getWriter();

Затем мой Джексон генерирует JSON, мне нужно просмотреть данные в ajax, поэтому я хотел, чтобы они были в виде JSON, а не в виде String

Для строки:

ObjectMapper objectMapper = new ObjectMapper();
        ToJson obj = new ToJson();
        String obj1 = objectMapper.writeValueAsString(obj);
        out.append(obj1);
        out.close();

Что оставляет меня с {"prname1":"P1neu","anz1":"1","prid1":"1","price1":"25"}, и я не могу получить к нему доступ с помощью obj.prname1 / etc

Итак, я пытался это:

response.setContentType("application/json");
        PrintWriter out = response.getWriter();

ObjectMapper objectMapper = new ObjectMapper();
        ToJson obj = new ToJson();
        String obj1 = objectMapper.writeValueAsString(obj);
        objectMapper.writeValue(out, obj1);
        System.out.println(obj);
        out.close();

Но это оставляет меня с этим: ShoppingCart$1ToJson@4974cd9e

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

, чтобы соответствовать требованиям, указанным ниже, код должен работать.

ObjectMapper mapper = new ObjectMapper();
Cart cart = new Cart("name", 1, 2.0F);
ObjectWriter pr = mapper.writerWithDefaultPrettyPrinter();
PrintWriter pw = new PrintWriter(System.out);
PrintWriter error = new PrintWriter(System.err); //use this if you want to send errors to a different output

try {
    String output = pr.forType(Cart.class).writeValueAsString(cart);
    pw.print(output);
} catch (JsonProcessingException e) {
    pw.print("ERROR: " + e.getMessage());
} finally {
    pw.flush();
}

я использовал эту простую модель

public class Cart {
    public String name;
    public int count;
    public float price;
}

на стороне javascript вам нужно передать входящую строку в JSON.parse()

так например

$.ajax({}).then((txt) => {
   //if you didn't tell the javascript library to handle the json parsing then 
  var json = JSON.parser(txt);
  console.log(json.name); //should print "name"
});
0 голосов
/ 01 июля 2018

Что вы делаете, конвертируете объект (т.е. obj) в строку JSON (т.е. obj1) и затем пишете obj1, который является String вместо obj, который является фактическим Object тебе нужно.

Итак, попробуйте заменить

String obj1 = objectMapper.writeValueAsString(obj);
objectMapper.writeValue(out, obj1);

с

objectMapper.writeValue(out, obj);

...