保定阿里云代理商:android获取服务器json数据类型

Android获取服务器返回的JSON数据类型有以下几种方式:

方式一:使用Android自带的JSONObject和JSONArray解析JSON数据,代码如下:

String jsonString = "{'name':'Tom','age':18,'address':{'city':'Beijing','road':'No.11'}}";
try {
    JSONObject jsonObject = new JSONObject(jsonString);
    String name = jsonObject.getString("name");
    int age = jsonObject.getInt("age");
    JSONObject addressObject = jsonObject.getJSONObject("address");
    String city = addressObject.getString("city");
    String road = addressObject.getString("road");
    Log.d("JSON", "name:" + name + ",age:" + age + ",city:" + city + ",road:" + road);
} catch (JSONException e) {
    e.printStackTrace();
}

方式二:使用第三方库Gson解析JSON数据,代码如下:

String jsonString = "{'name':'Tom','age':18,'address':{'city':'Beijing','road':'No.11'}}";
Gson gson = new Gson();
Person person = gson.fromJson(jsonString, Person.class);
Log.d("Gson", person.toString());

其中Person类的定义如下:

public class Person {
    private String name;
    private int age;
    private Address address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "name:" + name + ",age:" + age + ",address:" + address.toString();
    }
}

public class Address {
    private String city;
    private String road;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getRoad() {
        return road;
    }

    public void setRoad(String road) {
        this.road = road;
    }

    @Override
    public String toString() {
        return "city:" + city + ",road:" + road;
    }
}

方式三:使用RxJava和Retrofit结合解析JSON数据,代码如下:

public interface ApiService {
    @GET("api")
    Observable<Person> getPerson();
}

public class RetrofitManager {
    private static final String HOST = "http://xxx.xxx.xxx.xxx/";
    private ApiService apiService;

    private RetrofitManager() {
        OkHttpClient httpClient = new OkHttpClient.Builder().build();
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(HOST)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .client(httpClient)
                .build();
        apiService = retrofit.create(ApiService.class);
    }

    public static RetrofitManager getInstance() {
        return SingletonHolder.INSTANCE;
    }

    private static class SingletonHolder {
        private static final RetrofitManager INSTANCE = new RetrofitManager();
    }

    public Observable<Person> getPerson() {
        return apiService.getPerson();
    }
}

RetrofitManager.getInstance().getPerson()
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Subscriber<Person>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {
                e.printStackTrace();
            }

            @Override
            public void onNext(Person person) {
                Log.d("Retrofit", person.toString());
            }
        });

需要注意的是:第三种方式需要引入RxJava和Retrofit的依赖库。

Android获取服务器json数据类型可以使用HttpURLConnection或者OkHttp,再利用JSON.parseObject()方法将JSON字符串转化为Java对象。

使用HttpURLConnection获取JSON数据:

public String httpURLConnectionMethod(String urlString) throws IOException {
   URL url = new URL(urlString);
   HttpURLConnection conn = (HttpURLConnection) url.openConnection();
   conn.setRequestMethod("GET");
   conn.connect();
   String result = convertStreamToString(conn.getInputStream()); //转换输入流为 String
   return result;
}

private String convertStreamToString(InputStream is) throws IOException {
   BufferedReader reader = new BufferedReader(new InputStreamReader(is));
   StringBuilder sb = new StringBuilder();
   String line = null;
   while ((line = reader.readLine()) != null) {
       sb.append(line + "n");
   }
   is.close();
   return sb.toString();
}

使用OkHttp获取JSON数据:

public String okHttpMethod(String url) throws IOException {
   OkHttpClient client = new OkHttpClient();
   Request request = new Request.Builder()
           .url(url)
           .build();
   Response response = client.newCall(request).execute();
   String result = response.body().string();
   return result;
}

将获取到的JSON数据转换为Java对象:

String jsonStr = httpURLConnectionMethod(urlString);
User user = JSON.parseObject(jsonStr, User.class);

以上代码中的 User 类是你定义的 Java 对象类,可以根据 JSON 数据的结构来定义。例如,如果 JSON 数据的结构如下:

保定阿里云代理商:android获取服务器json数据类型
{
   "name": "Mike",
   "age": 22,
   "gender": "male"
}

则可以定义如下的 User 类:

public class User {
   private String name;
   private int age;
   private String gender;

   // getter and setter methods here

}

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/158280.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年3月8日 14:15
下一篇 2024年3月8日 14:33

相关推荐

  • 惠州阿里云代理商:阿里网站防护好使吗

    阿里云作为一家全球领先的云计算与人工智能技术服务提供商,提供了一系列的防护产品,包括阿里云网站防火墙(WAF)等。阿里云的网站防护产品通过多种手段来保护网站免受各种网络攻击和恶意行为的侵害。 阿里网站防护的主要功能包括: 防护流量的入侵和攻击:通过防火墙规则以及机器学习算法,对恶意流量进行实时识别和拦截,保障网站的正常运行。 防护网站的弱点和漏洞:通过对网站…

    2024年1月6日
    34900
  • 阿里云客服报名后

    感谢您对阿里云的支持和信任!如果您想成为阿里云的客服人员,请遵循以下步骤进行报名: 访问阿里云官方网站(https://www.aliyun.com/)。 在主页上找到“加入阿里云”或“人才招聘”等选项,点击进入。 在招聘页面中,选择“客服”或相关职位。 阅读并理解职位要求、岗位描述和相关福利待遇。 点击“申请职位”或类似按钮,填写个人信息和简历。 提交申请…

    2023年10月23日
    37400
  • 阿里云邮件推送有优势吗怎么设置

    阿里云邮件推送相比传统的邮件推送方式有以下优势: 高可靠性:阿里云邮件推送服务基于阿里云的稳定可靠的基础设施,保证邮件传递的高可靠性。 高送达率:阿里云邮件推送服务具有智能的邮件投递能力,可以帮助用户提高邮件的送达率,减少垃圾邮件的发送。 多种推送方式:阿里云邮件推送服务支持多种推送方式,包括API接口、SMTP接口以及控制台手动发送。 为了设置阿里云邮件推…

    2023年9月9日
    38200
  • 泰州阿里云代理商:as30 网络编程

    阿里云:您的首选云计算服务提供商 背景介绍 阿里云,即阿里巴巴云计算有限公司,是全球领先的云计算技术和服务提供商。作为泰州地区的阿里云代理商,AS30致力于帮助企业实现数字化转型与创新发展。 一站式云计算服务 阿里云提供全方位的云计算解决方案,涵盖基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)等多个层次。无论您是初创企业、中小企业…

    2024年1月26日
    33300
  • 台湾阿里云代理商:安全隔离

    台湾阿里云代理商的安全隔离指的是在代理商的服务中采取一系列措施,保障阿里云在台湾的用户和数据的安全。 安全隔离通常包括以下几个方面: 网络隔离:通过虚拟专有网络(VPC)等技术手段,将不同用户的网络环境隔离开,确保用户间的数据相互独立。 数据隔离:通过数据加密、访问控制等手段,确保不同用户之间的数据相互隔离,防止数据泄露和非法访问。 资源隔离:将不同用户的计…

    2023年12月28日
    37400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/