标签: jackson

将JSON数据转换为Java对象

我希望能够在Java操作方法中访问JSON字符串中的属性.只需说出字符串即可myJsonString = object.getJson().下面是字符串的示例:

{
    'title': 'ComputingandInformationsystems',
    'id': 1,
    'children': 'true',
    'groups': [{
        'title': 'LeveloneCIS',
        'id': 2,
        'children': 'true',
        'groups': [{
            'title': 'IntroToComputingandInternet',
            'id': 3,
            'children': 'false',
            'groups': []
        }]
    }]
}
Run Code Online (Sandbox Code Playgroud)

在此字符串中,每个JSON对象都包含其他JSON对象的数组.目的是提取ID列表,其中任何给定对象拥有包含其他JSON对象的组属性.我把Google的Gson视为潜在的JSON插件.任何人都可以提供某种形式的指导,告诉我如何从这个JSON字符串生成Java?

java json jackson gson

249
推荐指数
8
解决办法
29万
查看次数

使用Jackson(JSON)序列化 - 获得"没有找到序列化器"?

尝试使用Jackson序列化一个非常简单的对象时,我得到了一个例外.错误:

org.codehaus.jackson.map.JsonMappingException:没有为类MyPackage.TestA找到序列化程序,也没有发现创建BeanSerializer的属性(为了避免异常,请禁用SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS))

下面是序列化的简单类和代码.

任何人都可以告诉我为什么会收到此错误?

public class TestA {
    String SomeString = "asd";
}

TestA testA = new TestA();
ObjectMapper om = new ObjectMapper();
try {
    String testAString = om.writeValueAsString(testA); // error here!

    TestA newTestA = om.readValue(testAString, TestA.class);
} catch (JsonGenerationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (JsonMappingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

java json jackson

248
推荐指数
10
解决办法
27万
查看次数

如何在杰克逊中将JSON字符串解析为JsonNode?

它应该是如此简单,但我在尝试一小时#embarrasing后找不到它.

我需要获取一个JSON字符串,例如{"k1":v1,"k2":v2},解析为JsonNode.

JsonFactory factory = new JsonFactory();
JsonParser jp = factory.createJsonParser("{\"k1\":\"v1\"}");
JsonNode actualObj = jp.readValueAsTree();
Run Code Online (Sandbox Code Playgroud)

java.lang.IllegalStateException: No ObjectCodec defined for the parser, can not deserialize JSON into JsonNode tree

java parsing json jackson

221
推荐指数
5
解决办法
27万
查看次数

Jackson enum Serializing和DeSerializer

我正在使用JAVA 1.6和Jackson 1.9.9我有一个枚举

public enum Event {
    FORGOT_PASSWORD("forgot password");

    private final String value;

    private Event(final String description) {
        this.value = description;
    }

    @JsonValue
    final String value() {
        return this.value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我添加了一个@JsonValue,这似乎完成了将对象序列化为:

{"event":"forgot password"}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试反序列化时,我得到了一个

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not construct instance of com.globalrelay.gas.appsjson.authportal.Event from String value 'forgot password': value not one of declared Enum instance names
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

java enums jsonserializer jackson

208
推荐指数
11
解决办法
22万
查看次数

使用Jackson JSON映射器序列化/反序列化java 8 java.time

如何将Jackson JSON映射器与Java 8 LocalDateTime一起使用?

org.codehaus.jackson.map.JsonMappingException:无法从JSON String实例化类型[simple type,class java.time.LocalDateTime]的值; 没有单字符串构造函数/工厂方法(通过引用链:MyDTO ["field1"] - > SubDTO ["date"])

jackson java-time

203
推荐指数
12
解决办法
25万
查看次数

如何指定jackson只使用字段 - 最好是全局

默认的jackon行为似乎使用两个属性(getter和setter)和字段来序列化和反序列化为json.

我想使用这些字段作为序列化配置的规范来源,因此不希望jackson完全查看属性.

我可以使用注释在单个类的基础上执行此操作:

 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
Run Code Online (Sandbox Code Playgroud)

但我不想把它放在每一堂课......

是否可以在全球范围内进行配置?喜欢在Object Mapper中加一些?

java json jackson

177
推荐指数
7
解决办法
12万
查看次数

如何使用Jackson JSON将JSON字符串转换为Map <String,String>

我正在尝试做这样的事情,但它不起作用:

Map<String, String> propertyMap = new HashMap<String, String>();

propertyMap = JacksonUtils.fromJSON(properties, Map.class);
Run Code Online (Sandbox Code Playgroud)

但IDE说:

未选中的作业 Map to Map<String,String>

这样做的正确方法是什么?我只使用Jackson,因为这是项目中已有的,是否有一种原生Java方式转换为JSON /从JSON转换?

在PHP中,我会简单地json_decode($str)回到一个数组.我在这里需要基本相同的东西.

java jackson

174
推荐指数
8
解决办法
28万
查看次数

使用Jackson在JSON中更改字段名称

我正在使用杰克逊将我的一个物体转换为json.该对象有2个字段:

@Entity
public class City {
   @id
   Long id;
   String name;
   public String getName() { return name; }
   public void setName(String name){ this.name = name; }
   public Long getId() { return id; }
   public void setName(Long id){ this.id = id; }
}
Run Code Online (Sandbox Code Playgroud)

由于我想在jQuery自动完成功能中使用它,我希望'id'在json中显示为'value','name'显示为'label'.杰克逊的文档不明确这一点,我已经想尽注释,甚至远程好像它做什么,我需要,但我不能让name显示为label,并id显示为value在JSON.

有谁知道如何做到这一点,或者这是否可能?

java jquery hibernate jquery-ui jackson

160
推荐指数
4
解决办法
19万
查看次数

杰克逊:如何防止现场序列化

我有一个带密码字段的实体类:

class User {
    private String password;

    //setter, getter..
}
Run Code Online (Sandbox Code Playgroud)

我希望在序列化期间跳过此字段.但它应该仍然能够反序列化.这是必需的,以便客户端可以向我发送新密码,但无法读取当前密码.

我如何与杰克逊完成这项任务?

java json jackson

157
推荐指数
7
解决办法
12万
查看次数

何时使用@JsonProperty属性以及它用于什么?

这豆'州':

public class State {

    private boolean isSet;

    @JsonProperty("isSet")
    public boolean isSet() {
        return isSet;
    }

    @JsonProperty("isSet")
    public void setSet(boolean isSet) {
        this.isSet = isSet;
    }

}
Run Code Online (Sandbox Code Playgroud)

使用ajax'success'回调通过线路发送:

        success : function(response) {  
            if(response.State.isSet){   
                alert('success called successfully)
            }
Run Code Online (Sandbox Code Playgroud)

这里需要注释@JsonProperty吗?使用它有什么好处?我想我可以删除这个注释而不会产生任何副作用.

https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations上阅读这个注释我不知道什么时候需要使用它?

java ajax jackson

156
推荐指数
8
解决办法
33万
查看次数

标签 统计

jackson ×10

java ×9

json ×5

ajax ×1

enums ×1

gson ×1

hibernate ×1

java-time ×1

jquery ×1

jquery-ui ×1

jsonserializer ×1

parsing ×1