json存储数据gson读取数据

用as模拟QQ登录界面,用json存储数据gson读取数据
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:background="#E6E6F8"
    android:orientation="vertical"
    android:padding="10dp"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="30dp"
        android:src="@mipmap/ic_launcher_round"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
       android:orientation="horizontal">
       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:padding="10dp"
           android:text="账号"
           android:textColor="#000"
           android:textSize="20sp"/>
        <EditText
            android:id="@+id/et_account"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:padding="10dp"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
       android:orientation="horizontal">
       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:padding="10dp"
           android:text="密码"
           android:textColor="#000"
           android:textSize="20sp"/>
        <EditText
            android:id="@+id/et_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:password="true"
            android:padding="10dp"/>
    </LinearLayout>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/bt_login"
        android:layout_marginTop="25dp"
        android:background="#3c8dc4"
        android:text="登录"
        android:textSize="20sp"/>

</LinearLayout>
package com.example.mysaveqq;

import android.content.Context;
import android.content.SharedPreferences;
import android.widget.Toast;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

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

import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;

import static android.content.Context.MODE_PRIVATE;
import static java.lang.System.out;

public class SPsaveQQ {
    public static boolean saveUserInfo(Context context, String account, String password) throws JSONException {
//        SharedPreferences sp=context.getSharedPreferences("data",context.MODE_PRIVATE);
////        SharedPreferences.Editor edit=sp.edit();
////        edit.putString("useName",account);
////        edit.putString("pwd",password);
////        edit.commit();


        JSONObject jsonObject=new JSONObject();
        jsonObject.put("useName",account);
        jsonObject.put("pwd",password);
        try {
            FileOutputStream out1=context.openFileOutput("qq.json",context.MODE_PRIVATE);
            try {
                out1.write(jsonObject.toString().getBytes());
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        return true;
    }
     public static Map<String,String>getUserInfo(Context context,InputStream is) throws IOException {
//        SharedPreferences sp=context.getSharedPreferences("data",Context.MODE_PRIVATE);
//         String account=sp.getString("useName",null);
//         String password=sp.getString("pwd",null);
//         Map<String,String>userMap =new HashMap<String,String>();
//         userMap.put("account",account);
//         userMap.put("password",password);

         byte[] buffer=new byte[is.available()];

         is.read(buffer);
         String json =new String(buffer,"utf-8");
         is.close();
         Gson gson=new Gson();
         Type type=new TypeToken< Map<String,String>>(){}.getType();
         Map<String,String> userMap=gson.fromJson(json,type);
         return userMap;
     }
}

创建json对象
JSONObject jsonObject=new JSONObject();
jsonObject.put(“useName”,account);
jsonObject.put(“pwd”,password);
用gson解析
Gson gson=new Gson();
Type type=new TypeToken< Map<String,String>>(){}.getType();
Map<String,String> userMap=gson.fromJson(json,type);

主函数

package com.example.mysaveqq;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.service.autofill.SaveInfo;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import org.json.JSONException;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

import static android.os.Build.VERSION_CODES.M;
import static java.lang.System.out;


public class MainActivity extends AppCompatActivity {
    public EditText et_account;
    public EditText et_password;
    public Button btn_login;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        Map<String,String> userInfo=null;
        try {
            InputStream is;
            is=this.openFileInput("qq.json");
            userInfo = SPsaveQQ.getUserInfo(this,is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        if(userInfo !=null){
            et_account.setText(userInfo.get("useName"));
            et_password.setText(userInfo.get("pwd"));
        }
    }
    private void initView(){
        et_account=(EditText)findViewById(R.id.et_account);
        et_password=(EditText)findViewById(R.id.et_password);
        btn_login=(Button)findViewById(R.id.bt_login);
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()){
                    case R.id.bt_login:
                        String account=et_account.getText().toString().trim();
                        String password=et_password.getText().toString().trim();
                        if(TextUtils.isEmpty(account)){
                            Toast.makeText(MainActivity.this, "请输入QQ账号", Toast.LENGTH_SHORT).show();
                            return;
                        }
                        if(TextUtils.isEmpty(password)){
                            Toast.makeText(MainActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
                            return;
                        }
                        Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                        boolean isSaveSuccess= false;

                        try {
                            isSaveSuccess = SPsaveQQ.saveUserInfo(MainActivity.this,account,password);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
//
                        if(isSaveSuccess){
                            Toast.makeText(MainActivity.this,"保存成功",Toast.LENGTH_SHORT).show();

                        }else{
                            Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_SHORT).show();
                        }
                }
            }
        });
    }
}

json的位置
在这里插入图片描述在这里插入图片描述

结果:
在这里插入图片描述

发布了8 篇原创文章 · 获赞 3 · 访问量 5166

猜你喜欢

转载自blog.csdn.net/s56564/article/details/105054440