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小时前
|
Java
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
在 Java 中,类是一种定义对象的模板,它包含数据成员(字段)和方法。
|
1天前
|
Java
Java编程不再难:一文看懂抽象类与接口的区别和联系!
【6月更文挑战第17天】在Java OOP中,抽象类与接口助你构建复杂应用。以图书管理系统为例,抽象类`Book`作为基类提供共享属性和方法,不直接实例化。接口如`HasChapters`和`HasIssues`定义特殊行为。抽象类支持部分实现,单继承,适合共享行为;接口仅含常量和抽象方法,多实现,强调行为规范。通过继承和实现,实现代码复用和系统扩展性。理解两者异同,是提升Java编程能力的关键。
|
1天前
|
Java 开发者 C++
Java面向对象的终极挑战:抽象类与接口的深度解析!
【6月更文挑战第17天】在Java OOP中,抽象类和接口助力代码复用与扩展。抽象类不可实例化,提供通用框架,适合继承;接口包含纯抽象方法,支持多态与松耦合。选择抽象类用于继承已有方法和状态,接口则适用于不相关类共享行为。Java 8后接口能含默认方法,增加设计灵活性。抽象类与接口常结合使用,以实现最佳设计,如`Shape`抽象类实现`Drawable`和`Selectable`接口,展现两者协同优势。理解和熟练运用这对概念是提升代码质量的关键。
|
1天前
|
Java
Java编程界的黑魔法:利用抽象类和接口提升你的代码质量!
【6月更文挑战第17天】在Java中,抽象类和接口是提升代码质量的关键。抽象类通过提供共享接口和部分实现减少冗余,强制子类实现标准,并作为扩展点。接口则定义行为契约,促进多态性、松耦合和易扩展性。两者结合使用,可以在保证灵活性的同时增强代码结构和可维护性,为复杂系统的构建打下坚实基础。
|
1天前
|
Java 测试技术 开发者
超越普通Java开发者:掌握抽象类与接口的高级技巧!
【6月更文挑战第17天】在Java编程中,抽象类和接口是提升代码质量和可维护性的核心要素。通过抽象类实现基类定制,如预设实现并强制子类实现特定方法;接口则提供多继承及默认、静态方法,增强复用和模块化。两者结合使用,抽象类封装状态和行为,接口专注行为契约,利于单元测试中的模拟对象创建。掌握这些技巧,能助你编写出更优雅、高效的代码。
|
1天前
|
存储 Java 开发者
Java编程新视角:抽象类和接口,你不知道的秘密!
【6月更文挑战第17天】在Java中,抽象类与接口是抽象概念的关键工具。抽象类是不可实例化的模板,包含抽象和具体方法,适合有层次结构的继承;接口仅含抽象方法,像契约般规定实现类的行为,适用于无关对象间的统一接口。Java类单继承但可多实现接口,增加设计灵活性。理解并巧妙运用二者,能提升代码质量和可维护性。
|
9月前
|
JSON Java Maven
在Java中,我们可以使用第三方库来解析JSON数据
在Java中,我们可以使用第三方库来解析JSON数据。这里以常用的Jackson库为例,演示如何解析JSON数据。
66 1
|
8月前
|
JSON Java Maven
|
SQL 数据采集 JSON
java解析json数据生成mysql省市区街道四级联动sql
这里为了省事直接用嵌套的for循环了,生成sql文件以后直接用sql工具运行即可,需要提前创建好数据库表。
508 0
|
存储 JSON 前端开发
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?(2)
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?
277 0