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


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


如有问题,随时可以留言

目录
相关文章
|
5天前
|
存储 安全 算法
Java中的数据脱敏与隐私保护技术
Java中的数据脱敏与隐私保护技术
|
5天前
|
并行计算 Java 大数据
Java中的函数式接口与流式编程
Java中的函数式接口与流式编程
|
2天前
|
JSON JavaScript 前端开发
技术心得:利用JsonSchema校验json数据内容的合规性
技术心得:利用JsonSchema校验json数据内容的合规性
|
4天前
|
Java API
Java面试题:说明Lambda表达式在Java中的应用,以及函数式接口的概念和作用。
Java面试题:说明Lambda表达式在Java中的应用,以及函数式接口的概念和作用。
11 0
|
4天前
|
网络协议 Java
Java面试题:什么是Java中的接口?与抽象类有什么区别?
Java面试题:什么是Java中的接口?与抽象类有什么区别?
8 0
|
4天前
|
存储 安全 Java
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
8 0
|
4天前
|
安全 Java 调度
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
6 0
|
6天前
|
存储 监控 Java
Java中的数据治理与合规性管理策略
Java中的数据治理与合规性管理策略
|
7天前
|
存储 并行计算 Java
深入理解Java中的Lambda表达式与函数式接口
深入理解Java中的Lambda表达式与函数式接口
|
1月前
|
JSON JavaScript 测试技术
掌握JMeter:深入解析如何提取和利用JSON数据
Apache JMeter教程展示了如何提取和使用JSON数据。创建测试计划,包括HTTP请求和JSON Extractor,设置变量前缀和JSON路径表达式来提取数据。通过Debug Sampler和View Results Tree监听器验证提取结果,然后在后续请求和断言中使用这些数据。此方法适用于复杂测试场景,提升性能和自动化测试效率。
50 0