2015-06-27 4 views
0

Я использую спокойное обслуживание в grails. У меня есть 2 классов PersonКак передать объект как JSON в запрос POST или PUT в grails

import grails.rest.Resource 
@Resource(formats=['json', 'xml']) 

class Person { 
    String name 
    Address address 

    static constraints = { 
      } 
      } 

и Address в

import grails.rest.Resource 
    @Resource(formats=['json', 'xml']) 
    class Address { 

    String house 
    static constraints = { 
    } 
    } 

и в загрузчике я мог бы создать новую запись человека следующим образом

new Person(name:"John" , address: new Address(house:"John Villa").save()).save(); 

, но проблема в том, что я хочу сделать то же самое используя запрос POST с данными JSON. Я поставил UrlMappings.Groovy как

"/app/person"(resources: "person", includes: ['index', 'show', 'save', 'update', 'delete', 'create', 'patch']) 

"/app/address"(resources: "address", includes: ['index', 'show', 'save', 'update', 'delete', 'create', 'patch']) 

я попытался с помощью Почтальон клиента остальное, отправив запрос POST к «/ приложение/человек» с данными JSON

{ 
    "name":"john" , 
    "address": "{'house' :'sample address' }" 
} 

но дает ошибку 422 unprocessable организация.

Как я могу сделать то же самое с помощью JSON? Я хочу сделать как вставку, так и обновление с помощью методов POST и PUT.

+0

Не могли бы вы показать мне источник вашего/приложения/человека/указателя? –

+0

У меня нет контроллера под названием PersonController. crud-операции на объектах Person автоматически устанавливаются grails, когда я использую '/ app/person '(resources:« person »)' this url mapping. – Drd

ответ

0

Проблема с отправлением JSON. Хотя это действительно JSON, это не правильное представление для вашего ресурса. Ваш JSON должен быть:

{ 
    "name":"john", 
    "address": 
    { 
     "house":"sample address" 
    } 
} 

Как видно из вышеизложенного, что address свойство фактически вложенного объекта, а не String, как вы отправляете.

+0

Я пробовал в этом формате. но не работает. [это ответ, который я получаю] (http://i.stack.imgur.com/HZ1tb.png). – Drd

+0

любое другое решение? – Drd

0

Кроме того, вы проверили руководство по телефону http://grails.github.io/grails-doc/latest/guide/webServices.html? Особенно я хотел бы проверить раздел:

grails.mime.types = [ 
    … 
    json:   ['application/json', 'text/json'], 
    … 
    xml:   ['text/xml', 'application/xml'] 
] 

Помните, что при обработке «/приложение/человек» с PersonInstance, вы на самом деле выполнить «/приложение/человек/индекс/» с PersonInstance (так что при необходимости отлаживайте его источник).

Кроме того, двойная проверка 'id' в ваших классах.