小白和你一起,研究研究“JSON”解析(Http通信)

来源:互联网 发布:mac high sierra 升级 编辑:程序博客网 时间:2024/06/05 15:34

小白和你一起,研究研究“JSON”解析(Http通信)


现在很多企业都要会“JSON解析”,没办法,我们要开始学了。里面内容很简单,相信各位都看得懂。
这个项目是我帮一公司做的,其中就用到JSON解析,还有就是面试的时候,也有面试官会问这个问题。
先来几个图片看看吧:
第一张,就是登录Login:

第二张,就是输入用户名和密码:

第三张,就是登录成功后的了。

登录成功是不是有点怪,哈哈,下面,请看我代码,你就会明白了。

下面就是代码:
import java.io.IOException;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;import org.xmlpull.v1.XmlPullParserException;public class Test_1{String str1 = "{'name': 'cxh','sex': '1'}";private static final String NAME_SPACE = "http://www.vnet365.com/";// webservice请求超时时间private static final int TIME_OUT = 30 * 1000;/** * @param args */public static void main(String[] args){Test_1 t = new Test_1();t.getJsonObject();//输出:name:cxh,sex:1t.getJsonArray();//输出:http://www.bejson.com   http://www.ij2ee.comt.serizellableObject();//输出:{"passWord":"123456789","userName":"qiu"}System.out.println(t.login("123", "123"));//输出:{"total":"2","UserTB":[{"uid":"25","username":"123","password":t.getUserInfo(t.login("admin", "admin"));//输出:[{"uid":"1","username":"admin","password":}/** * json对象的使用 */public void getJsonObject (){JSONObject obj = JSONObject.fromObject(str1);String name = obj.getString("name");String sex = obj.getString("sex");System.out.println("name:" + name + "," + "sex:" + sex);}/** * json数组的使用 */public void getJsonArray (){String jsonArrStr = "[{ 'name': 'cxh', 'sex': '1','website':'http://www.bejson.com' },{ 'name': '三少', 'sex': '1','website':'http://www.ij2ee.com' }]";JSONArray array = JSONArray.fromObject(jsonArrStr);int size = array.size(); //获取JSON数组大小//JSONObject jo = array.getJSONObject(0);//取第一个JSON对象for(int i = 0; i < size; i ++){JSONObject jo1 = array.getJSONObject(i);System.out.println(jo1.getString("website")); //循环返回网址}}/** * 将对象序列化为json字符串 */public void serizellableObject (){User user = new User("qiu", "123456789");JSONObject obj = JSONObject.fromObject(user);System.out.println(obj.toString());}/** * 登录。 * @param userName * @param password * @return */public String login (String userName,String password){/** * 创建网络链接 * 第一个参数:访问服务器的某个特定方法的url * 第二个参数:超时时间 */HttpTransportSE transport = new HttpTransportSE("http://www.vnet365.com/VNetLogin.asmx",TIME_OUT);//指定webservice的命名空间以及调用的方法。SoapObject request = new SoapObject(NAME_SPACE, "Login");//设置调用方法的参数值。第一个参数的名字必须与服务器的一样request.addProperty("username", userName);request.addProperty("password",password);//生成调用WebService方法的SOAP请求信息。参数为webservice的版本号。(服务器的版本号)SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);//设置bodyOut属性envelope.bodyOut = request;envelope.dotNet = true;envelope.setOutputSoapObject(request);//使用call方法调用webservice方法String xmlMessage = null;try{transport.call(NAME_SPACE + "Login", envelope);xmlMessage = envelope.getResponse().toString();} catch (IOException e){e.printStackTrace();} catch (XmlPullParserException e){e.printStackTrace();}return xmlMessage;//xml输入流。}/** * 解析从服务器返回来的xml结果字符串。json已经内置xml解析 * @param jsonStr */public void getUserInfo (String jsonStr){JSONObject jsonObject = JSONObject.fromObject(jsonStr);/** * 抽取特定的字段。必须保证该字段在xml字符串中存在,否则会报错 * 在这里抽取“UserTB”字段的结果实际是json数组,里面保存的都是对象*/String result = jsonObject.getString("UserTB");System.out.println(result);//因为已经知道json字符串保存的是对象数组,所以可以直接转换JSONArray jsonArray = JSONArray.fromObject(result);//int size = jsonArray.size ()//获取json数组的大小//对结果进行分析。if (jsonArray.getJSONObject(0).get("error") == null)//登录失败error为0,登录成功{System.out.println("登录成功");//在这里就可以将获得的对象保存到bean中for (int i = 0;i < jsonArray.size(); i ++)System.out.println("uid :" + jsonArray.getJSONObject(i).getString("uid")+"username :" + jsonArray.getJSONObject(i).getString("username"));}else{System.out.println("登录失败");}}}

还有一个Bean的代码:
public class User{private String userName;private String passWord;public User(){super();}public User(String userName, String passWord){super();this.userName = userName;this.passWord = passWord;}public String getUserName(){return userName;}public User setUserName(String userName){this.userName = userName;return this;}public String getPassWord(){return passWord;}public User setPassWord(String passWord){this.passWord = passWord;return this;}}

运行结果如下(这是一个java文件):

原创粉丝点击