2015-03-30 34 views
20

Bir haritayı Jackson kullanarak geçerli bir JSON'a nasıl dönüştürebilirim? Bir Bahar Boot DİNLENME Mesaj yöntemi ile Google'ın GSON kullanarak yapıyorumHaritaya JSON kullanarak JSON kullanarak

...

İşte RESTful Web Servis var

: Ben çağırmak Yani

import java.util.Map; 

import org.springframework.web.bind.annotation.RequestBody; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RestController; 

import com.fasterxml.jackson.core.JsonFactory; 
import com.fasterxml.jackson.core.JsonParser; 
import com.google.gson.Gson; 

@RestController 
@RequestMapping("/myservice") 
public class ValidationService {  

    @RequestMapping(value="/validate", method = RequestMethod.POST) 
    public void validate(@RequestBody Map<String, Object> payload) throws Exception { 
     Gson gson = new Gson(); 
     String json = gson.toJson(payload); 
     System.out.println(json); 
    } 
} 

, bu kullanarak:

curl -H "Accept: application/json" -H "Content-type: application/json" \ 
-X POST -d '{"name":"value"}' http://localhost:8080/myservice/validate 
(tam olarak ne istediğimi budur) stdout'a aşağıdaki alın:

{"name":"value"} 

Bunu Google'ın Gson'u yerine Jackson'ı kullanarak yapmanın daha iyi bir yolu var mı ve/veya tamamen yanlış yola mı gidiyorum?

+0

olası yinelenen Gson] (http://stackoverflow.com/questions/2378402/jackson-vs-gson) –

+3

Neeraj Jain, Yorum için teşekkürler ama: Jackson vs Gson, Jackson ve Gson'un pozitif ve negatifleri hakkında. Bu yazı belirli bir sorudur. –

cevap

48

Sen şöyle Jackson kullanılarak JSON için Map dönüştürebilirsiniz: Burada aynı için link

Map<String,String> payload = new HashMap<>(); 
payload.put("key1","value1"); 
payload.put("key2","value2"); 

String json = new ObjectMapper().writeValueAsString(payload); 
System.out.println(json); 
+0

Bu, JSON için değil, String'e eşlenir. Çıkış dizgisini JSON türüne dönüştürmek için başka bir adım olacaktır. –

+0

@NayanWadekar bu gerçekten işe yarıyor, sanırım yanılıyorsunuzdur ya da belki biraz bilgi vermek istersiniz? –

+0

@BrunoBossola Maalesef, JSON nesnesini düşünmeyi düşünüyordum, JSON dize gösterimi için gerekli çıktıyı görmedim, bu doğru. –

0

Eğer jackson kullanıyorsanız, daha iyi ObjectNode doğrudan dönüştürmek. şöyle jackson Kullanılması

//not including SerializationFeatures for brevity 
static final ObjectMapper mapper = new ObjectMapper(); 

//pass it your payload 
public static ObjectNode convObjToONode(Object o) { 
    StringWriter stringify = new StringWriter(); 
    ObjectNode objToONode = null; 

    try { 
     mapper.writeValue(stringify, o); 
     objToONode = (ObjectNode) mapper.readTree(stringify.toString()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    System.out.println(objToONode); 
    return objToONode; 
} 
1

, bunu yapabilirsiniz: [Jackson Vs.

ObjectMapper mapper = new ObjectMapper(); 
    String clientFilterJson = ""; 
    try { 
     clientFilterJson = mapper.writeValueAsString(filterSaveModel); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
İlgili konular