首页 > 编程技术 > android

Json与Gson之简单对象转化和带泛型的List转化

发布时间:2016-10-2 16:23

下面我们来看一篇关于Json与Gson之简单对象转化和带泛型的List转化的例子,希望这篇文章能够给各位带来帮助。


Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。在Android Studio中直接引用

compile 'com.google.code.gson:gson:2.2.4'
下面先看一下怎么转化对象:

实体类如下:

public class TestEneity {
 
    /**
     * image : image/mango_cover.jpg
     * content : 火爆进口马来西亚特产大金芒果包邮500G
     * price : 18.9
     * PreferentialPrice : 14.9
     * you : 免邮费
     * number : 23
     */
 
    private String image;
    private String content;
    private String price;
    private String PreferentialPrice;
    private String you;
    private String number;
 
    public String getImage() {
        return image;
    }
 
    public void setImage(String image) {
        this.image = image;
    }
 
    public String getContent() {
        return content;
    }
 
    public void setContent(String content) {
        this.content = content;
    }
 
    public String getPrice() {
        return price;
    }
 
    public void setPrice(String price) {
        this.price = price;
    }
 
    public String getPreferentialPrice() {
        return PreferentialPrice;
    }
 
    public void setPreferentialPrice(String PreferentialPrice) {
        this.PreferentialPrice = PreferentialPrice;
    }
 
    public String getYou() {
        return you;
    }
 
    public void setYou(String you) {
        this.you = you;
    }
 
    public String getNumber() {
        return number;
    }
 
    public void setNumber(String number) {
        this.number = number;
    }
}

使用方式:


TestEneity testEntity=new TestEneity();
testEntity.setImage("image/mango_cover.jpg");
testEntity.setContent("火爆进口马来西亚特产大金芒果包邮500G");
testEntity.setPrice("18.9");
testEntity.setPreferentialPrice("14.9");
testEntity.setYou("免");
testEntity.setNumber("23");
 
System.out.println("----------简单对象之间的转化-------------");
// 简单的bean转为json
Gson gson=new Gson();
String s1 = gson.toJson(testEntity);
System.out.println("简单Bean转化为Json===" + s1);
 
// json转为简单Bean
TestEneity tset = gson.fromJson(s1, TestEneity.class);
System.out.println("Json转为简单Bean===" + tset);

List<TestEneity> testEntityList=new ArrayList<>();
for(int i=0;i<3;i++){
TestEneity testEntity=new TestEneity();
testEntity.setImage("image/mango_cover.jpg");
testEntity.setContent("火爆进口马来西亚特产大金芒果包邮500G");
testEntity.setPrice("18.9");
testEntity.setPreferentialPrice("14.9");
testEntity.setYou("免");
testEntity.setNumber("23");
testEntityList.add(testEntity);
System.out.println("----------带泛型的List之间的转化-------------");
// 带泛型的list转化为json
Gson gson=new Gson();
String s2 = gson.toJson(testEntityList);
System.out.println("带泛型的list转化为json==" + s2);
 
// json转为带泛型的list
List<TestEneity> retList = gson.fromJson(s2,
new TypeToken<List<TestEneity>>() {
}.getType());
for (TestEneity stu : retList) {
System.out.println(stu);
}
}

下面我们来看一篇关于没有配置NDK的Path环境变量而运行ndk-build命令时报错问题原因分析与此问题的解决办法,具体的如下。

如果在PATH环境变量下配置NDK的根目录,那么将有可能会报'ndk-build'isnotrecognizedasaninternalorexternalcommand,operableprogramorbatchfile.的错误.
如下:

'ndk-build'isnotrecognizedasaninternalorexternalcommand,operableprogramorbatchfile.

解决办法

这时,只需要将NDK的根目录路径拷贝到path中即可.

下面来看一篇关于Android.mk文件写法及错误提示原因分析,这个看是写错了还是逻辑错误吧,具体的来参考这篇教程。

//根据文档中的提示创建的Android.mk中的文本

 代码如下 复制代码

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := crypt //这里是库名
LOCAL_SRC_FILES := crypt.c //这里是库源码文件名

include $(BUILD_SHARED_LIBRARY)

当我写错了这个android.mk文件的时候报了一个"LOCAL_MODULE_FILENAME must not contain a file extension"的错误:

错误提示如下图所示:

[Jni]Android.mk文件写法及错误提示

[Jni]Android.mk文件写法及错误提示
安卓Android 6.0新特性有哪些呢,对于做开发的多少要了解一些关于不同版本之间的一些特性了,下面我们来看看。

全新的Android M相比目前的Android Lollipop(5.0)有六项重大的改进:
1.App Permissions(软件权限管理):在Android M里,应用许可提示可以自定义了。它允许对应用的权限进行高度管理,比如应用能否使用位置、相机、麦克风、通讯录等,这些都可以开放给开发者和用户。
2.Chrome Custom Tabs(网页体验提升):新版的M对于Chrome的网页浏览体验进行了提升,它对登陆网站、存储密码、自动补全资料、多线程浏览网页的安全性进行了一些列的优化。
3.App Links(APP关联):Android M加强了软件间的关联,谷歌在现场展示了 一个例子,比如你的手机邮箱里收到一封邮件,内文里有以个Twitter链接,用户点击该链接可以直接跳转到Twitter应用,而不再是网页。
4.Android Pay(安卓支付):终于来了!Android支付统一标准。新的M系统中集成了Android Pay。其特性在于简洁、安全、可选性。Android Pay是一个开放性平台,使用户就可以选择谷歌的服务或者使用银行的APP来使用它,Android Pay支持4.4以后系统设备,在发布会上谷歌宣布Android Pay已经与美国三大运营商700多家商店达成合作。支付功能可以使用指纹来进行支付,这意味着今年基于安卓M的Nexus产品肯定会有指纹识别了。
5.Fingerprint Support(指纹支持):Android M增加了对指纹的识别API,谷歌开始在M里自建官方的指纹识别支持,力求Android统一方案,目前所有的Android产品指纹识别都是使用非谷歌认证的技术和接口。
6.Power & Change(电量管理 ):新的电源管理模块将更为智能,比如Android平板长时间不移动时,M系统将自动关闭一些App。同时Android M设备将支持USB Type-C接口,新的电源管理将更好的支持Type-C接口。
 
其它:
1. 支持4K显示
虽然目前搭载Android 6.0的手机如Nexus 6P、5X并未搭载原生4K分辨率屏幕,但实际上Android 6.0本身已经支持4K显示,会通过一定优化形式使4K内容更加清晰。这一功能已经作为一项API向开发人员开放,旨在优化Android 6.0的4K显示性能。相信在之后,也会有越多越多的Android 6.0手机配备原生4K分辨率屏幕。
2. 启动验证
Android 6.0在开机时会自动运行验证代码,检测设备和操作系统是否被篡改,这是一项新增的安全功能。
3. 直接分享
谷歌在Android 6.0中引入了一个新的直接分享功能,能够快速分享第三方应用程序中的内容,开发人员可充分利用它实现更便捷的应用体验。

标签:[!--infotagslink--]

您可能感兴趣的文章: