把数据转换成json格式的字符串

2023-05-16

最近写程序遇到一个问题,把一些数据转换成json格式的字符串保存起来,这些数据有普通的键值对,还有列表类型的,下面写了一个小例子,列表数据以复选框CheckBox形式来展示,另外模拟加了一个普通数据的字段,当点击提交按钮时将EditText和选中的复选框的内容拼接成一个json字符串,效果如下图所示:
这里写图片描述
实现源码:
主要功能类MainActivity

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private CheckBox cb1, cb2, cb3, cb4, cb5;
    private List<CheckBox> checkBoxList = new ArrayList<CheckBox>();
    private Button btn_submit;
    private TextView tv_jsonString;
    private EditText et_workMode;

    private JSONObject object = null;  //JSONObject对象,处理一个一个的对象
    private JSONObject object2 = null;
    private JSONArray jsonArray = null;//JSONObject对象,处理一个一个集合或者数组
    private String jsonString = "";  //保存带集合的json字符串

    private List<CheckBoxInfo> checkBoxInfoList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        cb1 = (CheckBox) findViewById(R.id.cb1);
        cb2 = (CheckBox) findViewById(R.id.cb2);
        cb3 = (CheckBox) findViewById(R.id.cb3);
        cb4 = (CheckBox) findViewById(R.id.cb4);
        cb5 = (CheckBox) findViewById(R.id.cb5);

        // 将所有的checkbox放到一个集合中
        checkBoxList.add(cb1);
        checkBoxList.add(cb2);
        checkBoxList.add(cb3);
        checkBoxList.add(cb4);
        checkBoxList.add(cb5);

        et_workMode = (EditText) findViewById(R.id.et_workMode);
        btn_submit = (Button) findViewById(R.id.btn_submit);
        tv_jsonString = (TextView) findViewById(R.id.tv_jsonString);
        btn_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkBoxInfoList = new ArrayList<CheckBoxInfo>();
                //遍历集合中的checkBox,判断是否选择,获取选中的文本
                for (CheckBox checkbox : checkBoxList) {
                    if (checkbox.isChecked()) {
                        CheckBoxInfo checkBoxInfo = new CheckBoxInfo();
                        checkBoxInfo.setLike(checkbox.getText().toString());
                        checkBoxInfoList.add(checkBoxInfo);
                    }
                }
                changeArrayDateToJson();
            }
        });
    }


    private void changeArrayDateToJson() {  //把一个集合转换成json格式的字符串
        jsonArray = new JSONArray();
        object = new JSONObject();
        for (int i = 0; i < checkBoxInfoList.size(); i++) {  //遍历上面初始化的集合数据,把数据加入JSONObject里面
            object2 = new JSONObject();//一个user对象,使用一个JSONObject对象来装
            try {
                object2.put("like", checkBoxInfoList.get(i).getLike());  //从集合取出数据,放入JSONObject里面 JSONObject对象和map差不多用法,以键和值形式存储数据
                jsonArray.put(object2); //把JSONObject对象装入jsonArray数组里面
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        try {
            object.put("likeList", jsonArray); //再把JSONArray数据加入JSONObject对象里面(数组也是对象)
            object.put("workMode", et_workMode.getText().toString()); //这里还可以加入数据,这样json型字符串,就既有集合,又有普通数据
        } catch (JSONException e) {
            e.printStackTrace();
        }
        jsonString = object.toString(); //把JSONObject转换成json格式的字符串
        tv_j`
onString.setText(jsonString);
        Log.e("tag", "转换成json字符串: " + jsonString);
    }

}

XML布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tv_workMode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="工作模式"/>
        <EditText
            android:id="@+id/et_workMode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/tv_workMode"
            android:layout_marginLeft="10dp"
            android:hint="请填写工作模式"
            android:textSize="14sp"/>
    </RelativeLayout>

    <CheckBox
        android:id="@+id/cb1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="体育"/>

    <CheckBox
        android:id="@+id/cb2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="音乐"/>

    <CheckBox
        android:id="@+id/cb3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="美术"/>

    <CheckBox
        android:id="@+id/cb4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="英语"/>
    <CheckBox
        android:id="@+id/cb5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="语文"/>

    <Button
        android:id="@+id/btn_submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提交"/>

    <TextView
        android:id="@+id/tv_jsonString"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="jsonString:"/>

</LinearLayout>

两个实体类
SettingDataInfo

package com.junto.splicingjson;
import java.io.Serializable;
import java.util.List;

/**
 * Created by WangJinyong on 2017/9/20.
 */

public class SettingDataInfo implements Serializable {

    private String workMode;
    private List<CheckBoxInfo> checkBoxInfoList;

    public String getWorkMode() {
        return workMode;
    }

    public void setWorkMode(String workMode) {
        this.workMode = workMode;
    }

    public List<CheckBoxInfo> getCheckBoxInfoList() {
        return checkBoxInfoList;
    }

    public void setCheckBoxInfoList(List<CheckBoxInfo> checkBoxInfoList) {
        this.checkBoxInfoList = checkBoxInfoList;
    }
}

CheckBoxInfo 存放CheckBox列表

package com.junto.splicingjson;

import java.io.Serializable;

/**
 * Created by WangJinyong on 2017/9/20.
 */

public class CheckBoxInfo implements Serializable {

    private String like;

    public String getLike() {
        return like;
    }

    public void setLike(String like) {
        this.like = like;
    }
}

以上内容即可实现把数据转换成json格式的字符串

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

把数据转换成json格式的字符串 的相关文章

随机推荐

  • Windows系统删除隐藏U盘EFI分区的方法

    Windows系统删除隐藏U盘EFI分区的方法 如Windows系统上显示有容量为96M或256M的efi系统分区 xff0c 在磁盘管理中无法删除或隐藏 xff0c 可使用DiskPart工具删除误显示的盘符 使用DiskPart工具删除
  • Mysql数据库报错:Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY

    1 问题描述 xff1a Row size too large gt 8126 Changing some columns to TEXT or BLOB or using ROW FORMAT 61 DYNAMIC or ROW FORM
  • AMD IOMMU与Linux (2) -- IVRS及AMD IOMMU硬件初始化

    介绍AMD IOMMU driver基于IVRS的硬件初始化情况 1 I O Virtualization ACPI table 2 drivers iommu amd init c 1 I O Virtualization ACPI ta
  • AMD IOMMU与Linux (3) -- DMA

    Linux中DMA会使用硬件IOMMU如AMD IOMMU INTEL VT D xff0c 也会使用软件的SWIOTLB 这篇梳理一下LINUX内核在有AMD IOMMU的情况下 xff0c 是如何做DMA的 xff0c 内容包括如下 1
  • AMD IOMMU与Linux (4) -- Domain, Group, Device

    1 domain的本质是一个页表 xff0c 1对1的关系 2 IOMMU DOMAIN UNMANAGED vs IOMMU DOMAIN DMA a IOMMU DOMAIN UNMANAGED DMA mappings managed
  • 第三篇:知其然,知其所以然-USB音频设备的开发过程

    最近 xff0c 有朋友正好在开发一个USB音频设备 xff0c 所以询问我一些USB音频设备开发方面的技术细节问题 xff1b 也和音响发烧友聊到USB音频设备的实现方式与其优缺点 xff1b 后来 xff0c 也和人谈到实现一个USB音
  • 第七篇:风起于青萍之末-电源管理请求案例分析(下)

    第五篇 风起于青萍之末 电源管理请求案例分析 上 http blog csdn net u013140088 article details 18180249 第六篇 风起于青萍之末 电源管理请求案例分析 中 http blog csdn
  • 回溯算法(BackTracking)--八皇后问题

    0 xff09 回溯算法 xff1a 回溯算法也算是遍历算法的一种 xff0c 回溯算法是对Brute Force算法的一种改进算法 xff0c 一个典型的应用是走迷宫问题 xff0c 当我们走一个迷宫时 xff0c 如果无路可走了 xff
  • 第十九篇:USB Audio/Video Class设备协议

    转发请注明出处 随着项目的不断进行 我想在网上查找了一下USB Audio Video的最新资料 看看有没有业内人士的更新 由于我们的项目一直在技术的最前延 而且这个USB IF官方发布的协议 也非常非常新 结果找了半天 都是我这篇文章的转
  • 第三十二篇:Windbg中USB2.0调试环境的搭建

    2011年的时候 xff0c 为了开发USB Mass storage UASP USB attached SCSI Protocol 的设备驱动程序 xff0c 从米国买了两个USB2 0的调试小设备 xff08 如下图 xff0c 每个
  • 理解SerDes 之一

    理解SerDes FPGA发展到今天 xff0c SerDes Serializer Deserializer 基本上是标配了 从PCI到PCI Express 从ATA到SATA xff0c 从并行ADC接口到JESD204 从RIO到S
  • 理解SerDes 之二

    理解SerDes 之二 2012 11 11 21 17 12 转载 标签 xff1a dfe serdes it 2 3 接收端均衡器 Rx Equalizer 2 3 1 线形均衡器 Linear Equalizer 接收端均衡器的目标
  • USB3.0的物理层测试探讨

    USB简介 USB Universal Serial Bus 即通用串行总线 xff0c 用于把键盘 鼠标 打印机 扫描仪 数码相机 MP3 U盘等外围设备连接到计算机 xff0c 它使计算机与周边设备的接口标准化 在USB1 1版本中支持
  • ARM SoC漫谈

    作者 xff1a 重走此间路 链接 xff1a https zhuanlan zhihu com p 24878742 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 芯片厂商向客户介
  • linux下实现生产者消费者问题

    生产者 xff08 producer xff09 和消费者 xff08 consumer xff09 问题是并发处理中最常见的一类问题 xff0c 是一个多线程同步问题的经典案例 可以这样描述这个问题 xff0c 有一个或者多个生产者产生某
  • 解决Ubuntu下每隔几分钟自动锁屏,需要重新输入密码的问题

    看到这篇文章 xff0c 很实用 xff0c mark xff01 http www cnblogs com lanxuezaipiao p 3617436 html
  • Android NFC详解

    1 NFC概览 NFC xff0c 全称是Near Field Communication xff0c 中为近场通信 xff0c 也叫做近距离无线通信技术 使用了NFC技术的设备 xff08 例如移动电话 xff09 可以在彼此靠近的情况下
  • Microsoft VBScript 运行时错误 错误 '800a01a8' 缺少对象: ''

    Microsoft VBScript 运行时错误 错误 39 800a01a8 39 缺少对象 39 39 通常是这个对象已经关闭了 xff0c 你现在又关闭一次 xff01 xff01
  • 0/1背包问题之穷举解法

    0 1背包问题 有一个背包 xff0c 背包容量是M 61 150kg 有7个物品 xff0c 物品不可以分割成任意大小 xff08 这句很重要 xff09 要求尽可能让装入背包中的物品总价值最大 xff0c 但不能超过总容量 物品 A B
  • 把数据转换成json格式的字符串

    最近写程序遇到一个问题 xff0c 把一些数据转换成json格式的字符串保存起来 xff0c 这些数据有普通的键值对 xff0c 还有列表类型的 xff0c 下面写了一个小例子 xff0c 列表数据以复选框CheckBox形式来展示 xff