java读取接口返回的json数据 (二)

简介: java读取接口返回的json数据 (二)

注释文本可以全部删除,

java读取 其他服务接口 返回的json数据

package cn.wangshiyu777;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
 
import org.junit.Test;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
 
 
 
public class JsonUtil {
  public static String loadJson(String url) throws Exception {
    //读取url,返回json串
    StringBuilder json = new StringBuilder();
    URL oracle = new URL(url);
    URLConnection yc = oracle.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
    String inputLine = null;
    while((inputLine = in.readLine()) != null){
      json.append(inputLine);
    }
    in.close();
    
    return json.toString();
  }
  public static void main(String[] args) throws Exception {
    String url = "http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo";
    //
    String json = loadJson(url);
    System.out.println(json);
    //获取json字符串中key对应的值
//    JsonParser jsonParser = new JsonParser();
    //将json字符串转化成json对象
//    JsonObject jObject = jsonParser.parse(json).getAsJsonObject();
    //获取对应字段值
//    String topic = jObject.get("Topic").getAsString();
//    System.out.println("Topic:"+topic);
    
//    第二种
//    JSONArray js = new JSONArray(json);
//    for (int i = 0; i < js.length(); i++) {
//      JSONObject json1 = js.getJSONObject(i);
//      System.out.println(json1.getString("Topic"));
//    }
    
    //第三种有错
//    JSONObject jsonObject = JSON.parseObjet(json);
//    String r = jsonObject.getString("Topic");
//    System.out.println(r);
    
    //第四种
//    JSONObject json1 = new JSONObject(json);
//    String Value = json1.getString("Topic");
//    System.out.println(Value);
    
    JSONArray jsonArray = JSONArray.fromObject(json);
 
    //JSONArray jsonArray = JSONArray.fromObject(URLDecoder.decode(request.getParameter("rejectAry"),"UTF-8"));
    System.out.println(jsonArray);
    for (int i = 0; i < jsonArray.length(); i++) {
      JSONObject json1 = jsonArray.getJSONObject(i);
      System.out.println(json1.getString("Topic"));
    }
  }
  @Test
  public void aaa() throws UnsupportedEncodingException {
    String string  = new String("北京".getBytes("utf-8"),"unicode");
    String aString = new String(string.getBytes("unicode"), "utf-8");
    System.out.println(aString);
  }
}

以下问题是我遇到的,记录在下面


使用JSON,在SERVLET或者STRUTS的ACTION中取得数据时


如果会出现异常:java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher


原因是少了JAR包,造成类找不到


除了要导入JSON网站上面下载的json-lib-2.1.jar包之外,


还必须有其它几个依赖包:


commons-beanutils.jar


commons-httpclient.jar


commons-lang.jar


ezmorph.jar


morph-1.0.1.jar


把里面的包都加上就没事了


如有问题,随时可以留言

目录
相关文章
|
22天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
88 1
|
22天前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
166 0
|
22天前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
90 1
|
23天前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
2月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
86 11
|
2月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
164 3
|
2月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
151 16
|
3月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
192 23
|
存储 JSON 前端开发
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?(2)
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?
397 0
|
JSON JavaScript 前端开发
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?(1)
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?
213 0
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?(1)
下一篇
开通oss服务