Json 工具类封装

Json 工具类封装

依赖

<!-- fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.9</version>
</dependency>

JsonUtils.java

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.Map;

/**
 * Json 工具类
 */
public class JsonUtils {
    private final static Logger logger = LoggerFactory.getLogger(JsonUtils.class);
    private static SerializeConfig config;

    static {
        config = new SerializeConfig();
        // 此处可对在转 Json String 时对时间格式进行指定
//        config.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss"));
    }

    private static final SerializerFeature[] features = {
            // 输出空置字段
            SerializerFeature.WriteMapNullValue,
            // list字段如果为null,输出为[],而不是null
            SerializerFeature.WriteNullListAsEmpty,
            // 数值字段如果为null,输出为0,而不是null
            SerializerFeature.WriteNullNumberAsZero,
            // Boolean字段如果为null,输出为false,而不是null
            SerializerFeature.WriteNullBooleanAsFalse,
            // 字符类型字段如果为null,输出为"",而不是null
            SerializerFeature.WriteNullStringAsEmpty
    };

    /** Object TO Json String 字符串输出 */
    public static String toJSON(Object object) {
        try {
            return JSON.toJSONString(object, config, features);
        } catch (Exception e) {
            logger.error("JsonUtil | method=toJSON() | 对象转为Json字符串 Error!" + e.getMessage(), e);
        }
        return null;
    }

    /** Json String TO JSONObject */
    public static JSONObject toJSONObject(String text) {
        try {
            return JSON.parseObject(text);
        } catch (Exception e) {
            logger.error("JsonUtil | method=toJSON() | 将json格式的数据换为JSONObject Error!" + e.getMessage(), e);
        }
        return null;
    }

    /** 转换为数组 Object */
    public static Object[] toArray(String text) {
        try {
            return toArray(text, null);
        } catch (Exception e) {
            logger.error("JsonUtil | method=toArray() | 将json格式的数据转换为数组 Object  Error!" + e.getMessage(), e);
        }
        return null;
    }

    /** 转换为数组 (可指定类型) */
    public static <T> Object[] toArray(String text, Class<T> clazz) {
        try {
            return JSON.parseArray(text, clazz).toArray();
        } catch (Exception e) {
            logger.error("JsonUtil | method=toArray() | 将json格式的数据转换为数组 (可指定类型)   Error!" + e.getMessage(), e);
        }
        return null;
    }

    /** Json 转为 Jave Bean */
    public static <T> T toBean(String text, Class<T> clazz) {
        try {
            return JSON.parseObject(text, clazz);
        } catch (Exception e) {
            logger.error("JsonUtil | method=toBean() | Json 转为  Jave Bean  Error!" + e.getMessage(), e);
        }
        return null;
    }

    /** Json 转为 Map */
    public static Map<?, ?> toMap(String json) {
        try {
            return JSON.parseObject(json);
        } catch (Exception e) {
            logger.error("JsonUtil | method=toMap() | Json 转为   Map {},{}" + e.getMessage(), e);
        }
        return null;
    }

    /** Json 转 List,Class 集合中泛型的类型,非集合本身,可json-lib兼容的日期格式 */
    public static <T> List<T> toList(String text, Class<T> clazz) {
        try {
            return JSON.parseArray(text, clazz);
        } catch (Exception e) {
            logger.error("JsonUtil | method=toList() | Json 转为   List {},{}" + e.getMessage(), e);
        }
        return null;
    }

    /** 从json字符串获取指定key的字符串 */
    public static Object getValueFromJson(final String json, final String key) {
        try {
            if (json == null || key == null) {
                return null;
            }
            return JSON.parseObject(json).getString(key);
        } catch (Exception e) {
            logger.error("JsonUtil | method=getStringFromJson() | 从json获取指定key的字符串 Error!" + e.getMessage(), e);
        }
        return null;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++中,使用正则表达式封装解析JSON工具类可以方便地解析JSON格式的字符串。下面是一个简单的例子: ```cpp #include <iostream> #include <regex> #include <string> #include <vector> #include <map> class JsonParser { public: JsonParser() {} std::map<std::string, std::string> parse(std::string jsonStr) { std::map<std::string, std::string> jsonMap; std::regex reg("\"(.*?)\":\"(.*?)\""); // 匹配 key:value 的正则表达式 std::sregex_iterator it(jsonStr.begin(), jsonStr.end(), reg); std::sregex_iterator end; while (it != end) { std::smatch match = *it; jsonMap[match.str(1)] = match.str(2); ++it; } return jsonMap; } }; int main() { std::string jsonStr = "{\"name\":\"Tom\",\"age\":\"20\",\"address\":\"Shanghai\"}"; JsonParser parser; std::map<std::string, std::string> jsonMap = parser.parse(jsonStr); for (auto &p : jsonMap) { std::cout << p.first << ": " << p.second << std::endl; } return 0; } ``` 在上面的代码中,我们定义了一个`JsonParser`类,并实现了`parse`方法来解析JSON格式的字符串。在`parse`方法中,我们使用了正则表达式来匹配JSON字符串中的`key:value`键值对,并将其存入一个`map`中。最后,我们可以遍历这个`map`来输出解析结果。 需要注意的是,这里只是一个简单的例子,实际的JSON解析工具类可能需要处理更复杂的JSON格式,例如嵌套的JSON对象或数组。因此,我们需要更复杂的正则表达式来匹配这些格式,并编写更复杂的代码来解析它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值