Android Json 使用jsonschema2pojo生成.java文件文件

--------------------转载请注明:http://blog.csdn.net/feiduclear_up/article/details/42499409

概要

怎么才能快速的开发出带json的android应用。自己定义json对应的具体java beans,用Android自带的Json库解析json是一件很繁琐的事情。所以在这里,我引入一个工具和一个库。

  • Jsonschema2pojo:可以更具json自动生成出相应的javaclasses(http://code.google.com/p/jsonschema2pojo/)
  • Jackson:可以将java对象转换成json,也可以将json转换成java对象。(http://jackson.codehaus.org/)

Jsonschema2pojo

我们使用命令行模式来从json生成javaclasses

  • 从下面的地址下载最新的版本:

https://github.com/joelittlejohn/jsonschema2pojo/releases

为了防止下不了,也可以使用自己的下载地址,国内的地址毕竟快,而且稳定。附上地址:

http://download.csdn.net/detail/feidu804677682/8338311

  • 解压下载的版本,你会看见很多的jsonschema2pojo jar文件,一个lib文件夹和两个脚本文件。
  • 将你要使用的json文件放到解压目录下(可以到http://www.json-schema.org/address下载Json例子):
  • 然后在命令行下输入:

jsonschema2pojo --source address --target java-gen

你可以输入—help选项查看其它参数:

jsonschema2pojo –help

对有的非标准的Json文件,你需要加入-T参数

jsonschema2pojo --source address  --target java-gen -T JSON -a NONE

  • 现在你就可以在java-gen文件夹下面找到生成的java class文件了。
  • 在Android项目中使用这些class文件,你需要删除其中的@Generated("com.googlecode.jsonschema2pojo")
  • 注意:address 是你需要转换的json数据。

举例说明:

天气预报的json数据  test.json

{
    "weatherinfo": {
        "city": "珠海",
        "cityid": "101280701",
        "temp1": "14℃",
        "temp2": "19℃",
        "weather": "多云",
        "img1": "n1.gif",
        "img2": "d1.gif",
        "ptime": "18:00"
    }
}

经过转换之后生成如下实体类  自动生成Weatherinfo.java  java文件,都不需要我自己命名,这个类直接拿过来使用会有些错误,将错误去除就可以使用了。

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Generated;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

@Generated("org.jsonschema2pojo")
public class Weatherinfo {

    private String city;
    private String cityid;
    private String temp1;
    private String temp2;
    private String weather;
    private String img1;
    private String img2;
    private String ptime;
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    /**
     *
     * @return
     *     The city
     */
    public String getCity() {
        return city;
    }

    /**
     *
     * @param city
     *     The city
     */
    public void setCity(String city) {
        this.city = city;
    }

    /**
     *
     * @return
     *     The cityid
     */
    public String getCityid() {
        return cityid;
    }

    /**
     *
     * @param cityid
     *     The cityid
     */
    public void setCityid(String cityid) {
        this.cityid = cityid;
    }

    /**
     *
     * @return
     *     The temp1
     */
    public String getTemp1() {
        return temp1;
    }

    /**
     *
     * @param temp1
     *     The temp1
     */
    public void setTemp1(String temp1) {
        this.temp1 = temp1;
    }

    /**
     *
     * @return
     *     The temp2
     */
    public String getTemp2() {
        return temp2;
    }

    /**
     *
     * @param temp2
     *     The temp2
     */
    public void setTemp2(String temp2) {
        this.temp2 = temp2;
    }

    /**
     *
     * @return
     *     The weather
     */
    public String getWeather() {
        return weather;
    }

    /**
     *
     * @param weather
     *     The weather
     */
    public void setWeather(String weather) {
        this.weather = weather;
    }

    /**
     *
     * @return
     *     The img1
     */
    public String getImg1() {
        return img1;
    }

    /**
     *
     * @param img1
     *     The img1
     */
    public void setImg1(String img1) {
        this.img1 = img1;
    }

    /**
     *
     * @return
     *     The img2
     */
    public String getImg2() {
        return img2;
    }

    /**
     *
     * @param img2
     *     The img2
     */
    public void setImg2(String img2) {
        this.img2 = img2;
    }

    /**
     *
     * @return
     *     The ptime
     */
    public String getPtime() {
        return ptime;
    }

    /**
     *
     * @param ptime
     *     The ptime
     */
    public void setPtime(String ptime) {
        this.ptime = ptime;
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }

    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }

    public void setAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(city).append(cityid).append(temp1).append(temp2).append(weather).append(img1).append(img2).append(ptime).append(additionalProperties).toHashCode();
    }

    @Override
    public boolean equals(Object other) {
        if (other == this) {
            return true;
        }
        if ((other instanceof Weatherinfo) == false) {
            return false;
        }
        Weatherinfo rhs = ((Weatherinfo) other);
        return new EqualsBuilder().append(city, rhs.city).append(cityid, rhs.cityid).append(temp1, rhs.temp1).append(temp2, rhs.temp2).append(weather, rhs.weather).append(img1, rhs.img1).append(img2, rhs.img2).append(ptime, rhs.ptime).append(additionalProperties, rhs.additionalProperties).isEquals();
    }

}
时间: 2024-10-18 20:57:37

Android Json 使用jsonschema2pojo生成.java文件文件的相关文章

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的

linux中如何使用javah命令生成jni头文件

平台:瑞芯的rk3288 SDK:5.1 作者:fulinux 笔记用内容,可能不全 *****本文允许转载,不过请注明出处:http://blog.csdn.net/fulinus**** java程序 rk3288/frameworks/base/media/java/android/media/MediaScanner.java 文件中class 为public class MediaScanner 正常编译后会在rk3288/out/target/common/obj/JAVA_LIBR

Android AIDL自动生成Java文件测试

/******************************************************************************** * Android AIDL自动生成Java文件测试 * 说明: * 知道有aidl这东西已经挺久了,但是一直没有花时间来系统了解一下其工作机制,现在 * 花点时间一点一点验证一下其功能. * * 2016-5-8 深圳 南山平山村 曾剑锋 ***********************************************

eclipse或adt-bundle创建的android项目没有自动生成MainActivity.java和activity_main.xml等文件解决办法

以前我电脑一直以来都是用的eclipse3.7来开发android项目的,创建android项目也能正常生成MainActivity.java和activity_main.xml等文件.后来不知道什么原因,电脑几个盘上的文件很多打开都显示乱码.找了很多方法都无法解决,所以就把硬盘给格式化重装了系统. 重装系统后,重新配置了eclipse的android开发环境,但发现创建的android项目不能正常生成MainActivity.java和activity_main.xml等文件,网上找了很多方法

使用eclipse 进行Android ndk开发(javah进行头文件生成)

android 程序基于java写之后,正式发布之后很容易被反编译,因此需要一种方式去对代码或者敏感数据进行保护(例如通讯密钥等),ndk是一种很好的解决方案. ndk可以生成较难进行反编译的二进制库(.so)文件. 首先需要进行ndk的环境搭建,eclipse的搭建很简单,首先eclipse中增加android的插件,其需要下载一个ndk的包,然后在eclipse的设置中,Android项中的ndk的路劲进行设置: 如图: 随后就可以开始进行NDK的开发了,随后通过一个例子来进行ndk的开发.

【转】Android NDK学习(3)使用Javah命令生成JNI头文件 .

第一步: 在Eclipse中创建android项目,并声明Native接口: public native int add (int a, int b);public native int sub (int a, int b); 编译.运行: 这样在bin目录下就会生成类文件: 第二步: 打开命令行cmd,到达bin目录: F:\fww\workspace\TestJNI\bin> 输入如下命令: F:\fww\workspace\TestJNI\bin>javah -d header -cla

[转]ubuntu下整合eclipse和javah生成jni头文件开发android的native程序

转载自:http://blog.csdn.net/jiuyueguang/article/details/9404237 本文介绍两种利用javah命令生成jni头文件的方法,第一种为大众所知的javah命令,第二种为整合javah到eclipse里面.推荐第二种方式,方便快捷,随时修改随时生成 0:前提和条件: 1:ubuntu64位系统 2:android-ndk-r8e已经安装好,并且配置到eclipse里面 3:android-sdk-linux已经安装好,并且配置到eclipse里面

ubuntu下整合eclipse和javah生成jni头文件开发android的native程序(转)

本文介绍两种利用javah命令生成jni头文件的方法,第一种为大众所知的javah命令,第二种为整合javah到eclipse里面.推荐第二种方式,方便快捷,随时修改随时生成 0:前提和条件: 1:ubuntu64位系统 2:android-ndk-r8e已经安装好,并且配置到eclipse里面 3:android-sdk-linux已经安装好,并且配置到eclipse里面 1:第一种命令行模式 1:如图,我的项目结构是这样,我的 如图,采用eclipse自动生成的jni文件夹中,可以看到And

Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI

准备工作:Eclipse ADT IDE 开发工具,NDK ,Java 环境,博主的配置是:Windows x86 , ADT Build: v22.3.0-887826 , JAVA 1.7, NDK  android-ndk-r9 首先我们需要知道在 Linux 下编译 Project 生成 so 可以用 make ,但是在 WINDOWS 就不行了,这个就不多说了,大伙都明 白,然而今天写的这篇博客就是教大家怎么在Windows 配置自己的ADT开发插件也具备这样的功能,方便快速高效的开发