Code Monkey home page Code Monkey logo

bes2008 / easyjson Goto Github PK

View Code? Open in Web Editor NEW
112.0 4.0 15.0 3.76 MB

Provides an unified JSON access API, you can adapter any JSON library to Gson, Jackson, FastJson with easyjson。 提供了一个JSON门面库,就像slf4j一样。easyjson本身不做json的操作,完全依赖于底层实现库。可以直接使用Easyjson的API,底层的JSON库随时可切换。也可以使用其中某个json的API,然后通过easyjson适配给其他的json库

Home Page: https://github.com/fangjinuo/easyjson

License: Apache License 2.0

Java 99.98% ANTLR 0.02%
json fastjson gson jackson facade api

easyjson's People

Contributors

bes2008 avatar dailai avatar fuqianyu avatar jxt4995038 avatar zhaohuihua avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

easyjson's Issues

Timestamp字段反序列化失败

项目中使用如下依赖来替换fastjson

    <dependency>
        <groupId>com.github.fangjinuo.easyjson</groupId>
        <artifactId>fastjson-to-easyjson</artifactId>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.github.fangjinuo.easyjson/easyjson-jackson -->
    <dependency>
        <groupId>com.github.fangjinuo.easyjson</groupId>
        <artifactId>easyjson-jackson</artifactId>
    </dependency>

使用com.alibaba.fastjson.JSON.parseObject(str,A.class)
如果A中包含java.sql.Timestamp字段则会提示类型不匹配

some question

请问您后续项目都会使用easyjson吗? 我最近也觉得json做成门面模式可以快速切换依赖,比如遇到某些json第三方包漏洞问题且无法快速修复时, 自己改依赖比较快, 与springboot集成会更方便, 您觉得有必要吗?

使用 easyjson-jackson 反序列化的时候发现 float 会丢失精度

简单写了一个测试的例子:

public static class Test{
      public float number;

      public static void main(String[] args) {
          final JSON json =  new JacksonJSONBuilder().build();
          System.out.println(json.fromJson("{\"number\":0.01}", Test.class).number);
      }
}

预想的结果:
0.01

实际的结果:
0.0

jsonTreeNode调用ToString方法时输出格式错误

hey,最近在使用jackson桥接easyjson,测试过程中发现,调用JsonTreeNode.toString方法时,输出的是{"key":value}的形式,反序列化的话就会报错。
看了下toString源码:
@Override public String toString() { ... //这里 if (isJsonPrimitiveNode()) { return getAsString(); } ... if (isJsonObjectNode()) { JsonObjectNode jsonObjectNode = getAsJsonObjectNode(); StringBuilder b = new StringBuilder(); b.append("{"); Iterator<Map.Entry<String, JsonTreeNode>> iter = jsonObjectNode.propertySet().iterator(); while (iter.hasNext()) { Map.Entry<String, JsonTreeNode> property = iter.next(); b.append("\"").append(property.getKey()).append("\": "); // key b.append(property.getValue().toString()); if (iter.hasNext()) { b.append(", "); } } b.append("}"); return b.toString(); } return JSONBuilderProvider.simplest().toJson(this); }
是在递归调用value的toString的时候没加引号,导致value格式错误
请看一下,是否确实有这个问题,多谢

Calendar 使用FastJsonJSONBuilder 序列化失败

import com.jn.easyjson.core.JSON;
import com.jn.easyjson.core.JSONBuilder;
import com.jn.easyjson.core.exclusion.IgnoreAnnotationExclusion;
import com.jn.easyjson.fastjson.FastJsonJSONBuilder;

import java.util.Calendar;
import java.util.Locale;

public class JsonTestBean {

    public Calendar calendar = Calendar.getInstance();
    public byte dd = (byte)33;
    public char a = 'z';
    public Locale.Category oneEnum = Locale.Category.DISPLAY;

    public static void main(String[] args) {
        new JsonTestBean().testEasyJson();
    }

    public void testEasyJson() {
        JsonTestBean bean = new JsonTestBean();

        String str = com.alibaba.fastjson.JSON.toJSONString(bean);
        com.alibaba.fastjson.JSON.parseObject(str, JsonTestBean.class);

        FastJsonJSONBuilder jsonBuilder = new FastJsonJSONBuilder();
        JSON gson = jsonBuilder.serializeNulls(false).serializeNumberAsString(true).serializeEnumUsingIndex(true).addDeserializationExclusion(new IgnoreAnnotationExclusion()).build();
        String str1 = gson.toJson(bean, bean.getClass());
        JsonTestBean p1 = gson.fromJson(str1, JsonTestBean.class);
    }
}

/*
另外 ReadMe 里面的 QuickStart 的 依赖 格式有错误
<dependency>
    <groupId>com.github.fangjinuo.easyjson</groupId>
    <artifactId>easyjson-gson</artifactId>
    <version>${version}/version>
</dependency>

*/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.