2016-02-04 3 views
0

Мне нужно отправить данные с представления на контроллер с помощью ajax. Вот мой класс, и я должен отправить JSON соответствующим этой структуре класса. Джексон будет преобразовать JSON в мой классJSON stringify вложенный объект

public class RealEstateAgencyDTO extends BaseEntityDTO { 

/** The name. */ 
private String name; 

/** The description. */ 
private String description; 

/** The site. */ 
private String site; 

/** The phone number. */ 
private String phone; 

/** The address of the office. */ 
private AddressDTO address; 


public final String getName() { 
    return name; 
} 

public final void setName(final String newName) { 
    this.name = newName; 
} 

public final String getDescription() { 
    return description; 
} 

public final void setDescription(final String newDescription) { 
    this.description = newDescription; 
} 

public final String getSite() { 
    return site; 
} 

public final void setSite(final String newSite) { 
    this.site = newSite; 
} 

public final String getPhone() { 
    return phone; 
} 

public final void setPhone(final String newPhone) { 
    this.phone = newPhone; 
} 

public final AddressDTO getAddress() { 
    return address; 
} 

public final void setAddress(final AddressDTO newAddress) { 
    this.address = newAddress; 
} 

}

как я должен использовать JSON.stringify() для того, чтобы получить такой объект, который соответствует моей структуры

Я пытался использовать л но это не работает

var address = JSON.stringify({ 
       country: $('#country').val(), 
       region: $('#description').val(), 
       postalCode: $('#postalCode').val(), 
       locality: $('#locality').val(), 
       additionalInfo: $('#additionalInfo').val() 
      }); 

      var data = { 
       agencyName: $('#agencyName').val(), 
       description: $('#description').val(), 
       phoneNumber: $('#phoneNumber').val(), 
       webSite: $('#webSite').val(), 
       address: address 
      }; 

      $.ajax({ 
        type: "post", 
        url: "registerAgency", 
        data: JSON.stringify(data), 
        contentType: "application/json", 
        success: function(responseData, textStatus, jqXHR) { 
         alert("data saved") 
        }, 
        error: function(jqXHR, textStatus, errorThrown) { 
         console.log(errorThrown); 
        } 
       }) 

ответ

1

Вы слишком усложняете это. Не стройте до самого конца, иначе вы закончите с json внутри json, что вряд ли будет полезно в любой ситуации.

var address = { 
    country: $('#country').val(), 
    region: $('#description').val(), 
    postalCode: $('#postalCode').val(), 
    locality: $('#locality').val(), 
    additionalInfo: $('#additionalInfo').val() 
}; 

var data = { 
    agencyName: $('#agencyName').val(), 
    description: $('#description').val(), 
    phoneNumber: $('#phoneNumber').val(), 
    webSite: $('#webSite').val(), 
    address: address 
}; 

$.ajax({ 
    type: "post", 
    url: "registerAgency", 
    data: JSON.stringify(data), 
    contentType: "application/json", 
    success: function(responseData, textStatus, jqXHR) { 
     alert("data saved") 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     console.log(errorThrown); 
    } 
}); 
0

Адресный адрес по объектам уже закреплен. Следующий вызов будет рассматривать это как строковое значение (которое оно есть!) JSON.stringify() будет обрабатывать вложенные объекты в порядке.