什么是最好的json pojo转换器

什么是最好的json pojo转换器,json,jackson,gson,pojo,java,Json,Jackson,Gson,Pojo,Java,这里我列出了一些json到pojo转换java api 格森 杰克逊 琼根 JSON工具 请根据这些api的性能和易用性列出它们。另外,请告诉我是否有其他java api比上述更好,这主要取决于您开发的应用类型的上下文,它位于客户端(例如Android)或服务器端(例如SpringMVC)。这是我的经验,也许有人有更多的观点来证明我。我总是在SpringMVC服务器中使用Jackson,为什么?因为它很简单,当您开发RESTfull Web服务时,您将系统的管理权留给SpringMVC,例如重定

这里我列出了一些json到pojo转换java api

  • 格森
  • 杰克逊
  • 琼根
  • JSON工具

  • 请根据这些api的性能和易用性列出它们。另外,请告诉我是否有其他java api比上述更好,这主要取决于您开发的应用类型的上下文,它位于客户端(例如Android)或服务器端(例如SpringMVC)。这是我的经验,也许有人有更多的观点来证明我。我总是在SpringMVC服务器中使用Jackson,为什么?因为它很简单,当您开发RESTfull Web服务时,您将系统的管理权留给SpringMVC,例如重定向请求、执行业务逻辑等等。然后,您将有两个servlet,一个用于管理页面请求(如go to),另一个用于公开RESTfull api的servlet,这就是Jackson enter的位置,正如您所知(或可能不知道),在Tomcat中运行的所有webapps都有一个web.xml,在这里,您告诉Tomcat实例谁是servlet,它将处理什么请求,请检查以下示例:

      <!-- Spring MVC Dispatcher Servlet -->
      <servlet>
        <servlet-name>SpringMvcServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>
            classpath:config/applicationContext.xml
          </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>SpringMvcServlet</servlet-name>
        <url-pattern>/home/*</url-pattern>
      </servlet-mapping>
    
      <!-- Jersey -->
      <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
        <init-param>
          <param-name>com.sun.jersey.config.property.packages</param-name>
          <param-value>ar.com.kimboo.server.rest</param-value>
        </init-param>
        <init-param>
          <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
          <param-value>true</param-value>
        </init-param>
          <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
          <servlet-name>jersey-serlvet</servlet-name>
          <url-pattern>/rest/*</url-pattern>
        </servlet-mapping>
    
    坏消息是你必须把几乎所有的东西都包装在一个对象中。例如,您不能执行类似于
    new Gson().fromJson(string,string.class)
    的操作。但它非常灵活,我强烈建议在Android应用程序中使用它


    长话短说,这就是我对json技术的全部了解,希望这对您有所帮助。:)

    这主要取决于您开发的应用类型的上下文,它是在客户端(例如Android)还是在服务器端(例如SpringMVC)。这是我的经验,也许有人有更多的观点来证明我。我总是在SpringMVC服务器中使用Jackson,为什么?因为它很简单,当您开发RESTfull Web服务时,您将系统的管理权留给SpringMVC,例如重定向请求、执行业务逻辑等等。然后,您将有两个servlet,一个用于管理页面请求(如go to),另一个用于公开RESTfull api的servlet,这就是Jackson enter的位置,正如您所知(或可能不知道),在Tomcat中运行的所有webapps都有一个web.xml,在这里,您告诉Tomcat实例谁是servlet,它将处理什么请求,请检查以下示例:

      <!-- Spring MVC Dispatcher Servlet -->
      <servlet>
        <servlet-name>SpringMvcServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>
            classpath:config/applicationContext.xml
          </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>SpringMvcServlet</servlet-name>
        <url-pattern>/home/*</url-pattern>
      </servlet-mapping>
    
      <!-- Jersey -->
      <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
        <init-param>
          <param-name>com.sun.jersey.config.property.packages</param-name>
          <param-value>ar.com.kimboo.server.rest</param-value>
        </init-param>
        <init-param>
          <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
          <param-value>true</param-value>
        </init-param>
          <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
          <servlet-name>jersey-serlvet</servlet-name>
          <url-pattern>/rest/*</url-pattern>
        </servlet-mapping>
    
    坏消息是你必须把几乎所有的东西都包装在一个对象中。例如,您不能执行类似于
    new Gson().fromJson(string,string.class)
    的操作。但它非常灵活,我强烈建议在Android应用程序中使用它


    长话短说,这就是我对json技术的全部了解,希望这对您有所帮助。:)

    @eugen好吗?你用过吗?看看这里的一些基准和特性@eugen它好吗?你用过吗?看看这里的一些基准和特性
    public class HttpFuck {
        Gson gson = new Gson();
    
        public <T> T post(String url, Class<T> clazz, List<NameValuePair> parameters) {
            // Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            try {
            // Add your data
            httppost.setEntity(new UrlEncodedFormEntity(parameters));
            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            StringBuilder json = inputStreamToString(response.getEntity().getContent());
    
                T gsonObject = gson.fromJson(json.toString(), clazz);
            return gsonObject;
    
            } catch (ClientProtocolException e) {
            e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public <T> T get(String url, Class<T> clazz) {
            // Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httppost = new HttpGet(url);
            try {
            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            StringBuilder json = inputStreamToString(response.getEntity().getContent());
            T gsonObject = gson.fromJson(json.toString(), clazz);
            return gsonObject;
    
            } catch (ClientProtocolException e) {
            e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        // Fast Implementation
        private StringBuilder inputStreamToString(InputStream is) throws IOException {
            String line = "";
            StringBuilder total = new StringBuilder();
    
            // Wrap a BufferedReader around the InputStream
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));
    
            // Read response until the end
            while ((line = rd.readLine()) != null) { 
            total.append(line); 
            }
    
            // Return full string
            return total;
        }
    
    }