Нет конструктора/фабричного конструктора строкового аргумента/завода, чтобы десериализовать из строкового значения ('')JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Нет конструктора/фабричного конструктора строкового аргумента/завода, чтобы десериализовать из строкового значения ('')

Сообщение Anonymous »

Я сталкиваюсь с проблемой анализа JSON при использовании класса ObjectMapper из пакета com.fasterxml.jackson.databind , и ошибка, которую я получаю:

com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.graybar.utilities.ups.beans.Address: no String-argument constructor/factory method to deserialize from String value ('')
< /code>

Веб -приложение, в котором возникает эта проблема, является приложением Spring MVC с использованием переднего конца AngularJS, но я могу дублировать проблему с гораздо меньшей программой Java. Вот мои бобы: < /p>

shipment.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class Shipment {
@JsonProperty("Activity")
private ArrayList activity;
public ArrayList getActivity() {
return activity;
}
public void setActivity(ArrayList activity) {
this.activity = activity;
}
}
< /code>

Activity.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class Activity {
@JsonProperty("ActivityLocation")
private ArrayList activityLocation;
public ArrayList getActivityLocation() {
return activityLocation;
}
public void setActivityLocation(ArrayList activityLocation) {
this.activityLocation = activityLocation;
}
}
< /code>

ActivityLocation.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class ActivityLocation {
@JsonProperty("Address")
private Address address;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
< /code>

address.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class Address {
@JsonProperty("City")
private String city;
@JsonProperty("StateProvinceCode")
private String stateProvinceCode;
@JsonProperty("CountryCode")
private String countryCode;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountryCode() {
return countryCode;
}
public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
public String getStateProvinceCode() {
return stateProvinceCode;
}
public void setStateProvinceCode(String stateProvinceCode) {
this.stateProvinceCode = stateProvinceCode;
}
}
< /code>

Вот код, где я могу правильно отобразить JSON: < /p>

public static void main(String[] args) {
String jsonMessage = "" +
"{" +
" \"Activity\": [{ " +
" \"ActivityLocation\": { " +
" \"Address\": { " +
" \"City\": \"Hana\", " +
" \"StateProvinceCode\": \"Hi\", " +
" \"CountryCode\": \"US\" " +
" } " +
" } " +
" }, " +
" { " +
" \"ActivityLocation\": { " +
" \"Address\": { " +
" \"City\": \"Honolulu\", " +
" \"StateProvinceCode\": \"Hi\", " +
" \"CountryCode\": \"US\" " +
" } " +
" } " +
" }] " +
"} ";

try {
ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

Shipment shipment = mapper.readValue(jsonMessage, Shipment.class);
System.out.println("shipment.toString = " + shipment.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
< /code>

При корректировке данных в jsonmessage < /code> var - это когда я сталкиваюсь с ошибкой, которую я упомянул выше: < /p>

"{" +
" \"Activity\": [{ " +
" \"ActivityLocation\": { " +
" \"Address\": { " +
" \"City\": \"Hana\", " +
" \"StateProvinceCode\": \"Hi\", " +
" \"CountryCode\": \"US\" " +
" } " +
" } " +
" }, " +
" { " +
" \"ActivityLocation\": { " +
" \"Address\": \"\" " +
" } " +
" } " +
" }] " +
"} ";
< /code>

Итак, проблема возникает при изменении JSON с этого: < /p>

{
"ActivityLocation": {
"Address": {
"City": "Honolulu",
"StateProvinceCode": "Hi",
"CountryCode": "US"
}
}
}]
< /code>

до этого: < /p>

{
"ActivityLocation": {
"Address": ""
}
}
< /code>

Вместо отправки значений для моего адреса < /code> bean, я получаю просто пустую строку. К сожалению, я получаю свои данные от третьей стороны и не контролирую данные, которые я получаю. < /p>

Есть ли аннотация, которую необходимо добавить, чтобы иметь возможность справиться с этим? < /p>

Подробнее здесь: https://stackoverflow.com/questions/451 ... ring-value
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»