2015-10-29 3 views
0

Im пытается дать свойства объекту от Json.Json Jackson Объект Mapper IO exception Android

Я использую Jackson, и моя проблема - это исключение IO при попытке сопоставить свойства Json объекту.

Это объект:

public class TextBox { 
    private String label; 
    private String type; 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 

    public String getLabel() { 
     return label; 
    } 

    public void setLabel(String label) { 
     this.label = label; 
    } 
} 

И это, как я пытаюсь Ассинг значения JSon к объекту.

public class JacksonObjectMapperExample { 
    public TextBox JsonToTextBox() throws IOException { 

     String jsonData="{\n" + 
       "\t\"TextBox\" :\n" + 
       "\t\t[\n" + 
       "\t\t\t{\n" + 
       "\t\t\t\t\"label\": \"Nombre\",\n" + 
       "\t\t\t\t\"type\": \"TextBox\"\n" + 
       "\t\t\t}\n" + 
       "\t\t]\n" + 
       "}"; 
     //create ObjectMapper instance 
     ObjectMapper objectMapper = new ObjectMapper(); 
     //convert json string to object 
     TextBox textbox = objectMapper.readValue(jsonData, TextBox.class); 
     return textbox; 
    } 

} 

Я пробовал разные форматы Json и пытался прочитать его из файла.

Любые предложения? Спасибо

ответ

0

Удалите из своего JSON свои символы ("\ t", "\ n" и т. Д.).

Вам также необходимо добавить аннотацию @JsonProperty («label») (и введите) и создать пустой конструктор в вашем классе TextBox.

Ваш JSON Строка должна быть (то вы можете отформатировать его):

"{TextBox:[{label:Nombre, type:TextBox}]}" 

Но я думаю, что это JSON имеет неверный формат, поэтому массив внутри «TextBox»? Я думаю, что это должно быть:

"{TextBox:{label:Nombre, type:TextBox}}" 
+0

Спасибо за ответ, но это не исправлено, я попытался с обеих строк, я думаю, это имеет какое-то отношение к тому, как я занимаюсь обработкой исключений, я добавил throw IOException в свой основной метод, но я не мог сделать это с помощью метода onCreate (так как Android не позволяет вам исключать исключения), поэтому я окружил его попыткой поймать, но все равно не работает. –

+0

Опубликуйте свою ошибку logcat, пожалуйста, вместо того, чтобы выбрасывать исключение IO, я попытался бы окружить код «JSONException», «JsonParseException» и «IOException». –

+0

Если одно из Exception достигнуто, возвратите null или сделайте то, что вы хотите –

0

Проблема имя поля TextBox, он ищет его в классе textboxTextBox и не найдя его, я удалил его и отформатировал JSON как это:

"{\n" + "\t\t\t\t\"label\": \"Nombre\",\n" + "\t\t\t\t\"type\": \"TextBox\"\n" + "\t\t\t}";

Как сказал dolphinziyo, все/п и/т являются необязательными, вот LogCat, что отдал его:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Непризнанный поле "TextBox" (класс com.example.e alcazar.jacksontest.TextBox), не отмеченные как невежественные (2 известных свойства: «label», «type»])

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