安卓JSON格式化工具

前言

在日常工作中,后端返回的报文有时候格式比较混乱,不方便我们解析。然后我网上搜了一下,好像离线版的安卓平台JSON格式化工具并不多。不过没关系,没有的话那就去创造一个。

实现方法

实现方法其实很简单,直接利用GSON格式化就可以了,可以说毫无技术含量,不过近期在学习Kotlin,对于退出程序,自定义弹框这样的步骤,尝试使用Kotlin去实现,感觉还是有一定的收获的。

界面截图

在这里插入图片描述
在这里插入图片描述

部分代码

package com.example.jsonhelper

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.graphics.Color
import android.os.Bundle
import android.widget.*
import com.example.jsonhelper.framework.LyyBaseActivity
import com.google.gson.GsonBuilder
import com.google.gson.JsonParser
import org.json.JSONArray
import org.json.JSONObject

class ResultActivity : LyyBaseActivity() {
    private lateinit var tipLl:LinearLayout
    private lateinit var tipIv:ImageView
    private lateinit var tipTv:TextView
    private lateinit var sv:ScrollView
    private lateinit var resultTv:TextView
    private lateinit var copyBtn:Button
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result)
        initViews()
        initTitleBar(title = "格式化结果", isShowBackIcon = true)
        initEvents()
    }

    private fun initViews() {
        tipLl=findViewById(R.id.tipLl)
        tipIv=findViewById(R.id.tipIv)
        tipTv=findViewById(R.id.tipTv)
        sv=findViewById(R.id.sv)
        resultTv=findViewById(R.id.resultTv)
        copyBtn=findViewById(R.id.copyBtn)
        val jsonStr = intent.getStringExtra(MainActivity.DATA_KEY)

        if (jsonStr!=null&&isJSONStr(jsonStr)){
            tipTv.text="老铁,这个JSON没毛病!"
            tipTv.setTextColor(Color.parseColor("#419F4B"))
            tipIv.setImageResource(R.drawable.icons8_checkmark_96px)
            val gson = GsonBuilder().setPrettyPrinting().serializeNulls().create()
            val resultText = gson.toJson(JsonParser.parseString(jsonStr))
            resultTv.setText(resultText)
            copyBtn.isEnabled=true
        }else{
            tipTv.text="老铁,这个JSON有点问题!"
            tipTv.setTextColor(Color.parseColor("#F64439"))
            tipIv.setImageResource(R.drawable.icons8_delete_sign_96px)
            resultTv.text=""
            copyBtn.isEnabled=false
        }

    }

    /**
     * 判断字符串是否为JSON字符串。既不是对象,也不是数组,那么它就不是JSON字符串,否则就是JSON字符串
     */
    private fun isJSONStr(str:String):Boolean{
        try {
            JSONObject(str)
        } catch (e: Exception) {
            try {
                JSONArray(str)
            } catch (e: Exception) {
                return false
            }
        }
        return true
    }

    private fun initEvents() {
        copyBtn.setOnClickListener {
            copyText(resultTv.text.toString())
        }
    }

    private fun copyText(content:String){
        val clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
        val text = ClipData.newPlainText("LABEL", content)
        clipboardManager.setPrimaryClip(text)
        Toast.makeText(this,"复制成功!",Toast.LENGTH_SHORT).show()
    }


}

安装包下载

链接:https://pan.baidu.com/s/1CqgXjbG3ZNICpKOEWSGKzw
提取码:8jn4

项目完整源码

已经放到码云上,点我跳转


版权声明:本文为Deep_rooted原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。