• 网络通信——HTTP接口访问——移动数据格式JSON


    网络通信的交互数据格式有两大类,分别是JSON和XML 。


    对于App来说,基本采用JSON格式与服务器通信。


    JSON相比XML的优势主要有两个:
    (1)手机流量很贵,表达同样的信息,JSON串比XML串短很多。
    (2) JSON串解析得更快,也更省电,XML不但慢而且耗电。

     

    (1)整个JSON串由一对花括号包裹,并且内部的每个结构都以花括号包起来;
    (2)参数格式类似键值对,其中键名与键值之间以冒号分隔,形如“键名:键值”;
    (3)两个键值对之间以逗号分隔;
    (4)键名需要用双引号括起来,键值为数字的话则无需双引号,为字符串的话仍需双引号;
    (5)JSON数组通过方括号表达,方括号内部依次罗列各个元素,具体格式形如“数组的键名:[元素1,元素2,元素3]”;

    ================================================================================================

    引入:

     // https://mvnrepository.com/artifact/com.google.code.gson/gson
    implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.8'

    布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
    
            <Button
                android:id="@+id/btn_origin_json"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="原始JSON串"
                android:textColor="@color/black"
                android:textSize="17sp" />
    
            <Button
                android:id="@+id/btn_convert_json"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="转换JSON串"
                android:textColor="@color/black"
                android:textSize="17sp" />
        </LinearLayout>
    
        <TextView
            android:id="@+id/tv_json"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:text="这里查看JSON串的构造和解析结果"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
    </LinearLayout>

    UserInfo 
    package com.example.myapplication.bean;
    
    public class UserInfo 
    {
        public String name; // 姓名
        public int age; // 年龄
        public long height; // 身高
        public float weight; // 体重
        
        public UserInfo(String name, int age, long height, float weight) 
        {
            this.name = name;
            this.age = age;
            this.height = height;
            this.weight = weight;
        }
        
    }

    主代码;

    package com.example.myapplication;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import com.example.myapplication.bean.UserInfo;
    import com.google.gson.Gson;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener
    {
    
        private TextView tv_json; // 声明一个文本视图对象
        private UserInfo mUser; // 声明一个用户信息对象
        private String mJsonStr; // JSON格式的字符串
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mUser = new UserInfo("asi", 25, 165L, 50.0f); // 创建用户实例
            mJsonStr = new Gson().toJson(mUser); // 把用户实例转换为JSON串
    
            tv_json = findViewById(R.id.tv_json);
    
            findViewById(R.id.btn_origin_json).setOnClickListener(this);
            findViewById(R.id.btn_convert_json).setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v)
        {
            if (v.getId() == R.id.btn_origin_json)
            {
    
                mJsonStr = new Gson().toJson(mUser); // 把用户实例转换为JSON字符串
                tv_json.setText("JSON串内容如下:\n" + mJsonStr);
            }
            else if (v.getId() == R.id.btn_convert_json)
            {
    
                // 把JSON串转换为UserInfo类型的对象
                UserInfo newUser = new Gson().fromJson(mJsonStr, UserInfo.class);
    
                String desc = String.format("\n\t姓名=%s\n\t年龄=%d\n\t身高=%d\n\t体重=%f", newUser.name, newUser.age, newUser.height, newUser.weight);
    
                tv_json.setText("从JSON串解析而来的用户信息如下:" + desc);
            }
        }
    
    }

     

     

     

     

  • 相关阅读:
    Unity3D读取assetbundle
    Unity3D 发布成exe之后黑屏
    Unity3D优化总结
    Unity3D中中 rect[2] == rt->GetGLWidth() && rect[3] == rt->GetGLHeight()错误的原因及解决方法
    C# mysql 插入数据,中文乱码的解决方法
    WPF Canvas做自动缩放时获取控件的实际高度
    面向对象
    常用模块介绍
    python异常处理,多线程,多进程
    python生成器,递归调用
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/16794439.html
Copyright © 2020-2023  润新知