2014-12-31 4 views
0

Я хочу рассоление следующих JSON объекта Java Object (Location Class):Json десериализация объекта

{ 
    "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

Итак? Что за вопрос? –

+0

Я хочу Deserialize что JSon объект в Java для класса .. когда я попытался я получил следующее сообщение об ошибке flexjson.JsonNumber не может быть приведен к java.util.Map flexjson.factories.BeanObjectFactory.instantiate (BeanObjectFactory.java:17) flexjson.ObjectBinder.bind (ObjectBinder.java:95) flexjson.ObjectBinder.bindIntoObject (ObjectBinder.java:149) flexjson.factories.ClassLocatorObjectFactory.instantiate (ClassLocatorObjectFactory.java:38) flexjson.ObjectBinder.bind (ObjectBinder. java: 95) flexjson.ObjectBinder.bind (ObjectBinder.java:74) flexjson.JSONDeserializer.deserialize (JSONDeserializer.java:158) – Devloper

+1

Пожалуйста, обновите вопрос с этой ошибкой. Также, пожалуйста, добавьте инструмент, который вы используете для разбора JSON. – mvg

ответ

1

Взгляните на ценность организации в Json. Это целочисленное значение, но в объекте Java есть организация

+0

Итак, что мне нужно пройти туда? Должен ли я пройти этот JSON объект { "город": "TEST", "страна": "TEST", "широта": "1", "долгота": "1", "имя" : "TEST", " postalCode ":" 362001 ", " street ":" TEST ", " организация ": {" id ": 3," name ":" TEST "} } – Devloper

+0

Да, вы должны – Linh

+0

Спасибо, чувак, сейчас работает .. :) – Devloper

0

Вы можете использовать ObjectMapper для преобразования данных JSON в соответствующий объект, используя следующий фрагмент кода:

ObjectMapper mapper = new ObjectMapper(); 
Location location= mapper.readValue(jsonData, Location.class); 
+0

не работает .. :( – Devloper

+0

@Devloper вы видите любое исключение или любое сообщение об ошибке ?? –

Смежные вопросы