Objek peta Java, yang berisi bidang string JSON ke string

Saya menghadapi masalah saat memetakan objek saya ke JSON.

Saya memiliki objek, yang perlu saya konversi ke JSON yang tepat, tetapi beberapa bidang String objek saya sudah dalam format JSON:

Sdr sdr = new Sdr();
sdr.setLocation_area(("location_area"));
sdr.setEvent_info(("{\"chargeableDur\":0}"));
sdr.setAgent_info("{\"scp\":\"NAVI\",\"stack\":\"CAP2\"}");
sdr.setService_info(("{\"bcap\":\"8090A3\",\"balID\":55969859}"));
sdr.setStarttime(("starttime"));

Untuk pemetaan JSON saya menggunakan ObjectMapper:

public String toJsonString() {
    ObjectMapper mapper = new ObjectMapper();
    try {
        return mapper.writeValueAsString(this);
    } catch (JsonProcessingException e) {
        logger.error(e.getMessage());
    }
    return toString();
}

Namun, ObjectMapper gagal memetakan Strings, yang sudah berisi JSON dengan benar, dan setelah pemetaan saya mendapatkan jenis JSON ini:

{  
   "event_info":""{\"chargeableDur\":0}",
   "location_area":"location_area",
   "agent_info":"{\"scp\":\"NAVI\",\"stack\":\"CAP2\"}",
   "service_info":""{\"bcap\":\"8090A3\",\"balID\":55969859}",
   "starttime":"starttime"
}

Saya ingin ObjectMapper memetakan objek saya seperti itu:

{  
   "event_info":{  
      "chargeableDur":0
   },
   "location_area":"location_area",
   "agent_info":{  
      "scp":"NAVI",
      "stack":"CAP2"
   },
   "service_info":{  
      "bcap":"8090A3",
      "balID":55969859
   },
   "starttime":"starttime"
}

person Marius Barkauskas    schedule 02.08.2017    source sumber
comment
Jadi Anda ingin melakukan JSONify stringnya, dan membiarkan stringnya sudah di JSON apa adanya? Apakah ada cara untuk mengetahui mana yang sudah di-json?   -  person Turtle    schedule 02.08.2017
comment
mapper.writeValueAsString(this); menggunakan metode getX() dari setiap atribut kelas Anda untuk menempatkannya di JSON? Jika demikian, definisikan ulang metode tersebut untuk mengembalikannya tanpa format JSON jika ada.   -  person Asew    schedule 02.08.2017
comment
bagaimana jika Anda mengubah string tersebut menjadi implementasi array byte, dan meminta deserialize mengubahnya kembali menjadi string   -  person Austin_Anderson    schedule 02.08.2017
comment
Hanya ada 3 bidang yang sudah di-JSON: event_info, agent_info dan service_info, tapi saya tidak tahu bagaimana cara memberi tahu manajer objek, bahwa bidang-bidang ini sudah di-JSON   -  person Marius Barkauskas    schedule 02.08.2017


Jawaban (1)


Tampaknya hasil json Anda dirangkai. Cobalah untuk meletakkan hasil string di JSONObject terpisah sebagai

return new JSONObject(mapper.writeValueAsString(this)).toString();
person Chetan chadha    schedule 02.08.2017