Search code examples
jsondeserializationflexjson

Json Object Deserialization


I want to deserialize the following JSON object to Java Object (Location Class) :

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

My Java Class is :

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();
    }
}

And, Organization Class is :

public class Organization {
    String name
}

I got following error when trying to deserialize:

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)

I use following code (using Flex JSON) for deserializing :

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);
}

Solution

  • Take a look at organization value in Json. It's integer value but in Java object is Organization