Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jackson解析json_Java_Json - Fatal编程技术网

Java 使用jackson解析json

Java 使用jackson解析json,java,json,Java,Json,我有一个包含另一个类对象的请求类。现在我想将一个嵌套的JSON解析为请求类对象 我正在尝试使用ObjectMapper,但它会引发异常。请帮助我使用java Jackson做这件事 { "filters":[ { "key":"CustomerId", "op":"=", "value" : "1" }, { "key":"userName", "op":"=", "value" : "admin" } ], "startIndex" : 1, "size" : 10, "O

我有一个包含另一个类对象的请求类。现在我想将一个嵌套的JSON解析为请求类对象

我正在尝试使用
ObjectMapper
,但它会引发异常。请帮助我使用java Jackson做这件事

{
"filters":[
{
 "key":"CustomerId",
  "op":"=",
  "value" : "1"
},
{
 "key":"userName",
  "op":"=",
  "value" : "admin"
}
],
"startIndex" : 1,
"size" : 10,
"OrderBy" :
{
 "propertyId" : "userName",
  "Desc" : false
},
"TimeRange" : {
"startTimestamp" : 1,
 "endTimestamp" :10
}
}
逻辑:

public static class OrderBy {
                private String propertyId;
                private boolean desc = true;
        }

        class TimeRange {
            private Long startTimestamp;
            private Long endTimestamp;
        }

        class Filter {
            private String propertyId;
            private String op;
            private Object value;
        }

        public class Request {

        private List<Filter> filters;
        private TimeRange timeRange;
        private OrderBy orderBy;
        private int startIndex = 0;
        private int size = 20;
        }
公共静态类OrderBy{
私有字符串属性ID;
私有布尔desc=true;
}
类时间范围{
私人长startTimestamp;
私有长结束时间戳;
}
类过滤器{
私有字符串属性ID;
私有字符串op;
私人客体价值;
}
公共类请求{
私有列表过滤器;
私人时间范围;
私人订货人;
私有int startIndex=0;
私有整数大小=20;
}

我给你一个Jaskson Util工具类

package com.jackson.utils;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * The class JacksonUtil
 *
 * json字符与对像转换
 * 
 * @version: $Revision$ $Date$ $LastChangedBy$
 *
 */
public final class JacksonUtil {

public static ObjectMapper objectMapper;

/**
 * 使用泛型方法,把json字符串转换为相应的JavaBean对象。
 * (1)转换为普通JavaBean:readValue(json,Student.class)
 * (2)转换为List,如List<Student>,将第二个参数传递为Student
 * [].class.然后使用Arrays.asList();方法把得到的数组转换为特定类型的List
 * 
 * @param jsonStr
 * @param valueType
 * @return
 */
public static <T> T readValue(String jsonStr, Class<T> valueType) {
    if (objectMapper == null) {
        objectMapper = new ObjectMapper();
    }

    try {
        return objectMapper.readValue(jsonStr, valueType);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return null;
}

/**
 * json数组转List
 * @param jsonStr
 * @param valueTypeRef
 * @return
 */
public static <T> T readValue(String jsonStr, TypeReference<T> valueTypeRef){
    if (objectMapper == null) {
        objectMapper = new ObjectMapper();
    }

    try {
        return objectMapper.readValue(jsonStr, valueTypeRef);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return null;
}

/**
 * 把JavaBean转换为json字符串
 * 
 * @param object
 * @return
 */
public static String toJSon(Object object) {
    if (objectMapper == null) {
        objectMapper = new ObjectMapper();
    }

    try {
        return objectMapper.writeValueAsString(object);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return null;
}

}

希望对您有用。

您需要更具体地说明您的问题。它抛出了什么异常?你能分享一下错误吗?对不起,我的错,我做了一些错误的文件名,现在更正了它并能够解析它。
String userBeanToJson = "your json string";//please replace this for your need json 
Request jsonToUserBean = JacksonUtil.readValue(userBeanToJson, Request.class);