0

次の JSON オブジェクトを Java オブジェクト (Location Class) に淡水化したい:

{
  "city": "TEST",
  "country": "TEST",
  "latitude": "1",
  "longitude": "1",
  "name": "TEST",
  "postalCode": "362001",
  "street": "TEST",
  "organization": 3
}

私のJavaクラスは次のとおりです。

public class Location{
@ManyToOne
@ForeignKey(name = "FK_location__organization")
private Organization organization;

@NotNull
@Column(nullable = false)
private String name;

private boolean disabled;

private String street;
private String postalCode;
private String city;
private String country;

private Double latitude;
private Double longitude;

@Override
public String toString()
{
    return name;
}

public static List<Location> findAllLocationsOrderedByName()
{
    return entityManager().createQuery("SELECT o FROM Location o ORDER BY name ASC", Location.class).getResultList();}}

そして、組織クラスは次のとおりです。

public class Organization {
String name
}

逆シリアル化しようとすると、次のエラーが発生しました。

flexjson.JsonNumber cannot be cast to java.util.Map
flexjson.factories.BeanObjectFactory.instantiate(BeanObjectFactory.java:17)
flexjson.ObjectBinder.bind(ObjectBinder.java:95)
flexjson.ObjectBinder.bindIntoObject(ObjectBinder.java:149)
flexjson.ObjectBinder.bind(ObjectBinder.java:95)
flexjson.ObjectBinder.bind(ObjectBinder.java:74)
flexjson.JSONDeserializer.deserialize(JSONDeserializer.java:158)
flexjson.factories.ClassLocatorObjectFactory.instantiate(ClassLocatorObjectFactory.java:38)

逆シリアル化には、次のコードを (Flex JSON を使用して) 使用します。

import flexjson.JSONDeserializer;
import flexjson.JSONSerializer;

public static Location Location.fromJsonToLocation(String json) {
    System.out.println(json);
    return new JSONDeserializer<Location>()
    .use(null, Location.class).deserialize(json);
}
4

2 に答える 2

1

Json の組織値を見てみましょう。整数値ですが、Java オブジェクトでは Organization です

于 2014-12-31T13:10:38.093 に答える
0

次のスニペットを使用して、ObjectMapper を使用して json データを対応するオブジェクトに変換できます。

ObjectMapper mapper = new ObjectMapper();
Location location= mapper.readValue(jsonData, Location.class);
于 2014-12-31T12:51:50.903 に答える