java读写json测试实现手机地归属地的查询

  今天突然想玩玩json,苦于没有素材,忽然想到一般查询手机归属地内容应该很好用json格式保存,在网上找到了淘宝的归属地API,并下了处理json相关的jar包,动手玩了起来。整个例子挺简单的,只是在java处理字符乱码时稍微理了下头绪。

View java Code
 1 package com.think.java;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.InputStream;
 5 import java.io.InputStreamReader;
 6 import java.net.MalformedURLException;
 7 import java.net.URL;
 8 import java.util.ArrayList;
 9 import java.util.List;
10 import net.sf.json.JSONArray;
11 import net.sf.json.JSONObject;
12 
13 public class TestMobileCity {    
14     
15     /**
16      * 测试手机号码是来自哪个城市的,利用淘宝的API
17      * @param mobileNumber 手机号码
18      * @return
19      * @throws MalformedURLException
20      */
21     public static String calcMobileCity(String mobileNumber) throws MalformedURLException{
22         String jsonString = null;
23         JSONArray array = null;
24         JSONObject jsonObject = null;
25         String urlString = "http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=" + mobileNumber;
26         StringBuffer sb = new StringBuffer();
27         BufferedReader buffer;
28         URL url = new URL(urlString);
29         try{
30             InputStream in = url.openStream();
31             
32             // 解决乱码问题
33             buffer = new BufferedReader(new InputStreamReader(in,"gb2312"));
34             String line = null;
35             while((line = buffer.readLine()) != null){
36                 sb.append(line);
37             }
38             in.close();
39             buffer.close();
40             // System.out.println(sb.toString());
41             jsonString = sb.toString();
42             // 替换掉“__GetZoneResult_ = ”,让它能转换为JSONArray对象
43             jsonString = jsonString.replaceAll("^[__]\\w{14}+[_ = ]+", "[");
44             // System.out.println(jsonString+"]");
45             String jsonString2 = jsonString + "]";
46             // 把STRING转化为json对象
47             array = JSONArray.fromObject(jsonString2);
48             
49             // 获取JSONArray的JSONObject对象,便于读取array里的键值对
50             jsonObject = array.getJSONObject(0);        
51             
52         }catch(Exception e){
53             e.printStackTrace();
54         }
55         return jsonObject.getString("province");
56     }
57     
58     /**
59      * 计算多个号码的归属地
60      * @param mobileNumbers 号码列表
61      * @return
62      * @throws MalformedURLException
63      */
64     public static JSONObject calcMobilesCities(List<String> mobileNumbers) throws MalformedURLException{
65         JSONObject jsonNumberCity = new JSONObject();
66         for(String mobileNumber : mobileNumbers){
67             jsonNumberCity.put(mobileNumber, calcMobileCity(mobileNumber));            ;
68         }        
69         return jsonNumberCity;
70     }
71     
72     public static void main(String[] args) throws Exception{
73         String testMobileNumber = "1881758452";
74         System.out.println(calcMobileCity(testMobileNumber));
75         List<String> mobileList = new ArrayList<String>();
76         for(int i = 1350345; i < 1350388; i++){
77             mobileList.add(String.valueOf(i));
78         }
79         System.out.println(calcMobilesCities(mobileList).toString());
80     }
81 }

附:

json相关jar包

原文出处:http://www.cnblogs.com/caoyuanzhanlang

  ==========================================================================================================

  ===================================    以上代码纯属个人的娱乐,欢迎指正与交流   ===================================

  ===================================    尊重劳动成果,转载请注明出处,万分感谢   ===================================

  ==========================================================================================================

  java读写json测试实现手机地归属地的查询

你可能感兴趣的:(java)