Documentation

You are viewing the documentation for the 2.3.x release series. The latest stable release series is 2.4.x.

§JSON işlemek ve sunmak

Java’da, Play nesneleri JSON’ye ve JSON’yi nesnelere çevirmek için Jackson JSON kütüphanesini kullanır. Play’in action’ları JsonNode türüyle çalışır ve framework play.libs.Json API’sinde dönüştürmeler için yardımcı metotlar sağlar.

§Java nesnelerini JSON’a dönüştürmek

Jackson, alan isimlerine, getter ve setter’lara bakarak Java nesnelerini kolayca JSON’ye dönüştürmenizi sağlar. Örneğin aşağıdaki basit Java nesnesini kullanacağız:

Unable to find label person-class in source file code/JavaJsonActions.java

Nesnenin JSON temsilini ayrıştırabilir ve yeni bir Person sınıfı yaratabiliriz:

Unable to find label from-json in source file code/JavaJsonActions.java

Benzer bir şekilde, Personnesnesini JsonNode şeklinde yazabiliriz:

Unable to find label to-json in source file code/JavaJsonActions.java

§Bir JSON isteği işlemek

Bir JSON isteği, istek gövdesi olarak geçerli bir JSON yükü taşıyan bir HTTP isteğidir. Onun Content-Type başlığı text/jsonveya application/json MIME türünü belirtmek zorundadır.

Varsayılan olarak bir action, gövde JSON’sini (aslında bir Jackson JsonNode'u olarak) almak için kullanabileceğiniz herhangi içerik gövde ayrıştırıcısını kullanır:

Unable to find label json-request-as-anycontent in source file code/JavaJsonActions.java

Tabii ki kendi BodyParserımızı belirterek Play’den içerik gövdesini doğrudan JSON olarak ayrıştırmasını istemek daha iyi ve basittir:

Unable to find label json-request-as-json in source file code/JavaJsonActions.java

Not: Bu şekilde, Content-type’ı application/json olup aslında JSON olmayan istekler için otomatik olarak bir 400 HTTP yanıt döndürülecektir.

Bunu cURL ile komut satırında test edebilirsiniz:

curl
  --header "Content-type: application/json"
  --request POST
  --data '{"name": "Guillaume"}'
  http://localhost:9000/sayHello

Bununla yanıt verir:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 15

Hello Guillaume

§ Bir JSON yanıtı sunmak

Bir önceki örneğimizde bir JSON isteği işledik ama bir text/plain yanıtıyla cevap verdik. Haydi bunu yanıtı da geçerli bir JSON HTTP yanıtı olacak şekilde değiştirelim:

Unable to find label json-response in source file code/JavaJsonActions.java

Şimdi bu şekilde yanıt verir:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{"exampleField1":"foobar","exampleField2":"Hello world!"}

Ayrıca bir Java nesnesi döndürebilir ve onu Jackson kütüphanesiyle otomatik olarak JSON’ye dönüştürebilirsiniz:

Unable to find label json-response-dao in source file code/JavaJsonActions.java

§İleri düzey kullanım

Play Jackson kullandığı için siz de kendi ObjectMapperınızı kullanarak JsonNodeları yaratabilirsiniz. JSON dönüştürme işlemini daha fazla özelleştirmek için jackson-databind için dokümantasyon sayfasına bakabilirsiniz.

Play’in JsonAPI’lerini (toJson/fromJson) özelleştirilmiş bir ObjectMapper ile kullanmak isterseniz, bunun gibi bir şeyi GlobalSettings#onStart metodunuza ekleyebilirsiniz:

Unable to find label custom-object-mapper in source file code/JavaJsonActions.java

Next: XML ile çalışmak


Dokümantasyonun bu çevirisi Play ekibi tarafından yapılmamaktadır. Eğer bir hata bulduysanız, bu sayfanın kaynak kodu burada bulunmaktadır. Dokümantasyon yönergelerini okuduktan sonra lütfen katkı yapmaktan çekinmeyin.