Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
zesen
122 / 85 / 1
Регистрация: 17.10.2010
Сообщений: 436
#1

Ошибка в Jackson сustom Serializers/Deserializers - Программирование Android

08.02.2012, 15:02. Просмотров 697. Ответов 0
Метки нет (Все метки)

Для того, что бы разобраться с сustom Serializers/Deserializers вынес в отдельный проект, выдает вот такую ошибку:

ERROR/AndroidRuntime(288): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.MyActivity}: java.lang.UnsupportedOperationException: Can not create generator for non-byte-based target

Файлы программы:

MyActivity.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.example;
 
 import android.app.Activity;
 import android.os.Bundle;
 import com.example.JacksonObject;
 import org.codehaus.jackson.map.*;
 import org.codehaus.jackson.JsonGenerationException;
 import java.io.IOException;
 
 public class MyActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 
    String jacksonString = "{\"DateField\":\"/Date(61283424600000)/\",\"StringField\":\"STRING_string\",\"DoubleField\":\"87.12345\",\"IntegerField\":\"387\"}";
    try {
        MyJsonWrapper sss = new MyJsonWrapper();
 
        JacksonObject[] mailItems2 = sss.getMyJson().readValue(jacksonString, JacksonObject[].class);
        int a2 = 3;  //это просто так, что бы поставить точки!!!
        int  b = a2; //это просто так, что бы поставить точки!!!
 
    }   catch (JsonGenerationException e) {
 
        e.printStackTrace();
 
    } catch (JsonMappingException e) {
 
        e.printStackTrace();
 
    } catch (IOException e) {
 
        e.printStackTrace();
 
    }
    int a = 3; //это просто так, что бы поставить точки!!!
    int s = 10; //это просто так, что бы поставить точки!!!
    s = s + a; //это просто так, что бы поставить точки!!!
}
}
JacksonObject.java

Java
1
2
3
4
5
6
7
8
9
10
11
package com.example;
 
import java.util.Date;
 
public class JacksonObject
{
public Date DateField;
public String StringField;
public Double DoubleField;
public int IntegerField;
}
MyJsonWrapper.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.example;
 
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.Version;
import org.codehaus.jackson.map.*;
import org.codehaus.jackson.map.module.SimpleModule;
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.smile.*;
import org.codehaus.jackson.*;
import org.codehaus.jackson.map.ser.*;
import org.codehaus.jackson.map.ser.std.NullSerializer;
import org.codehaus.jackson.map.deser.*;
 
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.Date;
 
public class MyJsonWrapper
{
 
public ObjectMapper getMyJson()
{
    ObjectMapper mapper = new ObjectMapper(new SmileFactory());        
    SimpleModule module = new SimpleModule("MyModule", new Version(1, 0, 0, null));
 
    module.addSerializer(Date.class, new JsonDateSerializer());
    module.addDeserializer(Date.class, new JsonDateDeserializer());
 
    mapper.registerModule(module);
 
    return mapper;
}
 
public class JsonDateDeserializer extends JsonDeserializer<Date>
{
 
    public Date deserialize(JsonParser jp, DeserializationContext context) throws IOException, JsonProcessingException
    {
        try {
 
        String s = jp.getText().replace("/Date(", "").replace(")/", "");
 
        if (s.equals("")) return null;
 
        boolean isDateBefore1970 = false;
 
        ............................................
 
        if (isDateBefore1970)
            return new Date(-Long.valueOf(s) - offset * 60 * 1000);
        else
            return new Date(Long.valueOf(s) + offset * 60 * 1000);
 
        }catch (JsonMappingException e){
            // If a JSON Mapping occurs, simply returning null instead of blocking things
            return null;
        }
 
    }
}
 
public class JsonDateSerializer extends JsonSerializer<Date>
{
    public void serialize(Date date, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException
    {            
        jgen.writeString("/Date(" + date.getTime() + ")/");
    }
}    
}
а если в MyJsonWrapper.java использовать static вместо public

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class MyJsonWrapper
{
public static ObjectMapper getMyJson()
{        
    ObjectMapper mapper = new ObjectMapper(new SmileFactory());        
    SimpleModule module = new SimpleModule("MyModule", new Version(1, 0, 0, null));
 
    module.addSerializer(Date.class, new JsonDateSerializer());
    module.addDeserializer(Date.class, new JsonDateDeserializer());
 
    mapper.registerModule(module);
 
    return mapper;
}
 
static class JsonDateDeserializer extends JsonDeserializer<Date>
{
 
    public Date deserialize(JsonParser jp, DeserializationContext context) throws IOException, JsonProcessingException
    {
        try {
то выдает такую ошибку

ERROR/AndroidRuntime(314): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.MyActivity}: java.lang.UnsupportedOperationException: Can not create generator for ......
0
Миниатюры
Ошибка в Jackson сustom Serializers/Deserializers   Ошибка в Jackson сustom Serializers/Deserializers  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2012, 15:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в Jackson сustom Serializers/Deserializers (Программирование Android):

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson Parser не работает как надо - Java SE
Всем привет! Кто может сказать - почему Jackson парсер моей реализации собирает null значения из json фалйа? Класс парсера: ...

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson Parser не работает как надо - Java SE
Всем привет! Кто может сказать - почему Jackson парсер моей реализации собирает null значения из json фалйа? Класс парсера: ...

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson Parser не работает как надо - Java SE
Всем привет! Кто может сказать - почему Jackson парсер моей реализации собирает null значения из json фалйа? Класс парсера: ...

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson Parser не работает как надо - Java SE
Всем привет! Кто может сказать - почему Jackson парсер моей реализации собирает null значения из json фалйа? Класс парсера: ...

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson Parser не работает как надо - Java SE
Всем привет! Кто может сказать - почему Jackson парсер моей реализации собирает null значения из json фалйа? Класс парсера: ...

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson Parser не работает как надо - Java SE
Всем привет! Кто может сказать - почему Jackson парсер моей реализации собирает null значения из json фалйа? Класс парсера: ...

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson Parser не работает как надо - Java SE
Всем привет! Кто может сказать - почему Jackson парсер моей реализации собирает null значения из json фалйа? Класс парсера: ...

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson Parser не работает как надо - Java SE
Всем привет! Кто может сказать - почему Jackson парсер моей реализации собирает null значения из json фалйа? Класс парсера: ...

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson and Enums - Java EE
Есть несколько Enumов типа такого public enum PaymentStatus { QUEUED, PROCESSED; } Есть pojo, в котором есть поля, заданные...

Jackson Parser не работает как надо - Java SE
Всем привет! Кто может сказать - почему Jackson парсер моей реализации собирает null значения из json фалйа? Класс парсера: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.