手机端解析json

首先要搭建服务器

package com.json.action;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.json.service.JSONService;
import com.json.tools.JsonTools;

public class JsonAction extends HttpServlet {
    private JSONService service;

    
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    public void init() throws ServletException {
        // Put your code here
        service = new JSONService();
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        this.doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        response.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        String flag = request.getParameter("flag");
        String msg = "";
        if (flag.equals("person")) {
            msg = JsonTools.CreateJaso("person", service.getPerson());
        }else if(flag.equals("persons")){
            msg = JsonTools.CreateJaso("persons", service.getListPerson());
        }else if(flag.equals("liststring")){
            msg = JsonTools.CreateJaso("liststring", service.getListString());
        }else if(flag.equals("listmap")){
            
            msg = JsonTools.CreateJaso("listmap", service.getListMaps());
        }
        out.print(msg);
        out.flush();
        out.close();
    }

    

}

然后我们要通过手机端进行网络连接,根据传入参数的不同得到不同的json字符串

package com.example.jiexijson.tools;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpTools {
    public static String getContent(String path) {
        try {
            URL url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setReadTimeout(5000);
            conn.setConnectTimeout(5000);
            if (conn.getResponseCode() == 200) {
                InputStream in = conn.getInputStream();
                return getStringFromInput(in);
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return path;
    }

    private static String getStringFromInput(InputStream in) {
        byte[] b = new byte[1024];
        int len = 0;
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        try {
            while ((len = in.read(b)) != -1) {
                outputStream.write(b, 0, len);
            }
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return new String(outputStream.toByteArray());

    }
}

然后我们要对这个json字符串进行解析,服务器中发出来的是什么对象,我们就要通过这个字符串把它还原回去

package com.example.jiexijson.jsontools;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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

import com.example.jiexijson.bean.Person;

public class FindJson {
    //把json字符串解析成对象。     json字符串的key  json字符串
    public static Person getPerson(String key,String json){
        Person person = new Person();
        try {
            //返回一个json对象
            JSONObject jsonObject = new JSONObject(json);
            //取出键以后的部分
            JSONObject getValue = jsonObject.getJSONObject(key);
            //服务器传过来是对象,解析就要是一个对象。
            person.setId(getValue.getInt("id"));
            person.setName(getValue.getString("name"));
            person.setAddress(getValue.getString("address"));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return person;
    }
    public static List<Person> getListPerson(String key,String json){
        List<Person> list = new ArrayList<Person>();
        try {
            JSONObject jsonObject = new JSONObject(json);
            //返回json数组
            JSONArray value = jsonObject.getJSONArray(key);
            for (int i = 0; i < value.length(); i++) {
                Person person = new Person();
                //返回数组里的json对象,然后进行取出
                JSONObject getValue = value.getJSONObject(i);
                person.setId(getValue.getInt("id"));
                person.setName(getValue.getString("name"));
                person.setAddress(getValue.getString("address"));
                list.add(person);
                
            }
            
            
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
        return list;
    }
    public static List<String> getListString(String key,String json){
        List<String> list = new ArrayList<String>();
        try {
            JSONObject jsonObject = new JSONObject(json);
            JSONArray array = jsonObject.getJSONArray(key);
            for (int i = 0; i < array.length(); i++) {
                //取出数组里的字符串
                list.add(array.getString(i));
            }
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list;
    }
    public static List<Map<String, Object>> getListMap(String key,String json){
         List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
         try {
             //返回json字符串返回json对象
            JSONObject jsonObject = new JSONObject(json);
            //通过key来取得json对象的数组部分
            JSONArray array = jsonObject.getJSONArray(key);
            
            for (int i = 0; i < array.length(); i++) {
                //把每一个数组返回一个可以解析的json对象
                JSONObject value = array.getJSONObject(i);
                
                Map<String,Object> map = new HashMap<String, Object>();
                //遍历里面的键
                Iterator<String> iterator = value.keys();
                //判断还有没有下一个
                while(iterator.hasNext()){
                    //取得json的key
                    String json_key = iterator.next();
                    //通过key取得json的值
                    Object json_object = value.get(json_key);
                    if(json_object==null){
                        json_object = "";
                    }
                    //加到map集合里
                    map.put(json_key, json_object);
                    list.add(map);
                }
            }
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list;
    }
}

最后我们就要在activity里通过点击事件调用了

package com.example.jiexijson;

import java.util.List;
import java.util.Map;

import com.example.jiexijson.bean.Person;
import com.example.jiexijson.jsontools.FindJson;
import com.example.jiexijson.tools.HttpTools;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
    private Button person;
    private Button persons;
    private Button liststring;
    private Button listmap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        person = (Button) findViewById(R.id.btn_person);
        persons = (Button) findViewById(R.id.btn_persons);
        liststring = (Button) findViewById(R.id.btn_liststring);
        listmap = (Button) findViewById(R.id.btn_listmap);
        person.setOnClickListener(this);
        persons.setOnClickListener(this);
        liststring.setOnClickListener(this);
        listmap.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_person:
            String path = "http://192.168.21.1:8080/json/servlet/JsonAction?flag=person";
            //获得json的数组形式,但还是要解析成person对象
            String jsonString = HttpTools.getContent(path);
            //返回json解析后的对象
            Person person = FindJson.getPerson("person", jsonString);
            System.out.println(person.toString());
            break;
        case R.id.btn_persons:
            String path1 = "http://192.168.21.1:8080/json/servlet/JsonAction?flag=persons";
            String jsonString2 = HttpTools.getContent(path1);
            List<Person> list = FindJson.getListPerson("persons", jsonString2);
            System.out.println(list.toString());
            break;
        case R.id.btn_liststring:
            String path2 = "http://192.168.21.1:8080/json/servlet/JsonAction?flag=liststring";
            String jsonString3 = HttpTools.getContent(path2);
            List<String> listString = FindJson.getListString("liststring",jsonString3);
            System.out.println(listString.toString());
            break;
        case R.id.btn_listmap:
            String path3 = "http://192.168.21.1:8080/json/servlet/JsonAction?flag=listmap";
            String jsonString4 = HttpTools.getContent(path3);
            List<Map<String, Object>> listmap = FindJson.getListMap("listmap", jsonString4);
            System.out.println(listmap.toString());
            break;
        }
    }

}

 

转载于:https://www.cnblogs.com/84126858jmz/p/4936808.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 连接手机端需要通过网络进行通信,而 Spring Boot 提供了多种网络通信方式,例如 HTTP、WebSocket 等。下面以 HTTP 通信为例,介绍 Spring Boot 连接手机端的步骤: 1. 确定手机端和 Spring Boot 服务端所在的网络环境,例如是否在同一局域网内。 2. 在 Spring Boot 中创建一个控制器(Controller),使用 `@RestController` 注解标记,该控制器用于处理 HTTP 请求。 3. 在控制器中编写处理 HTTP 请求的方法,例如使用 `@RequestMapping` 注解标记方法,指定处理的 URL 地址和请求方法类型(GET、POST 等)。 4. 在处理请求的方法中,返回需要发送给手机端的数据,例如 JSON 格式的数据。 5. 在手机端使用 HTTP 客户端库(例如 OkHttp)向 Spring Boot 服务端发送 HTTP 请求,获取返回的数据。 需要注意的是,在连接手机端时需要考虑网络安全问题,例如使用 HTTPS 协议进行通信,对数据进行加密等。 ### 回答2: 连接手机端的步骤主要包括以下几个步骤: 1. 搭建服务器:使用Spring Boot框架搭建服务器,可以使用Java语言编写后端代码。Spring Boot提供了简单且高效的方式来创建和发布基于Java的应用程序。 2. 编写接口:在服务器中编写接口,用于手机端与服务器之间的通信。可以使用Spring Boot的Restful API来开发接口,提供数据传输和交互功能。 3. 手机端开发:在手机端开发中,可以使用Android或iOS开发平台进行应用程序的开发。根据服务器接口的需求,编写与服务器进行交互的代码。 4. 连接服务器:在手机端应用程序中,使用网络编程的方式连接服务器。可以使用HTTP协议进行数据传输,通过POST或GET方法与服务器进行交互。 5. 数据传输:在手机端应用程序中,通过网络编程将数据发送给服务器或从服务器获取数据。可以使用JSON或XML等数据格式进行数据的传输和解析。 6. 处理请求:服务器接收到来自手机端的请求后,根据接口中的逻辑处理请求。可以对请求进行验证、数据处理、数据库操作等。 7. 响应手机端:服务器处理完请求后,将处理结果以响应的方式返回给手机端。可以使用JSON或XML等格式将数据返回给手机端。 8. 手机端处理响应:手机端应用程序接收到来自服务器的响应后,进行相关处理。可以解析响应数据,更新UI界面,展示服务器返回的内容。 总结起来,连接手机端的步骤包括搭建服务器、编写接口、手机端开发、连接服务器、数据传输、处理请求、响应手机端手机端处理响应等环节。这些步骤可以通过使用Spring Boot框架、Android或iOS开发平台以及网络编程技术实现。 ### 回答3: Spring Boot 是一个开源的Java开发框架,可以轻松地创建独立的、生产级别的Spring应用。连接手机端步骤如下: 1. 添加相应的依赖:在Spring Boot项目的pom.xml文件中,添加与手机端连接相关的依赖,比如WebSocket依赖或者移动端网络请求库的依赖,可以使用Maven或Gradle自动下载依赖。 2. 编写控制器代码:在Spring Boot项目中,编写与手机端进行通信的控制器代码。可以使用Spring MVC框架,编写相应的请求和响应处理方法。 3. 创建WebSocket连接:如果使用WebSocket与手机端进行实时通信,首先需要在Spring Boot项目中创建WebSocket连接。可以使用Spring框架提供的WebSocket支持,创建一个WebSocket处理器来处理与手机端的连接请求和消息。 4. 编写手机端代码:在手机端,可以使用安卓或iOS开发平台编写相应的代码。根据需求,可以使用WebSocket、HTTP请求或其他协议与Spring Boot应用进行通信。根据具体的功能需求,编写相应的代码以实现与Spring Boot应用的连接和交互。 5. 测试连接:在开发完成后,可以使用手机设备或模拟器来测试与Spring Boot应用的连接。确保手机端能够与应用正常通信,并处理相应的请求和响应。 总结来说,连接手机端步骤包括添加依赖、编写控制器代码、创建WebSocket连接、编写手机端代码和进行连接测试。这样可以实现手机端与Spring Boot应用的连接和通信,实现不同功能的交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值