本文目录一览:
如何解析返回的json格式数据
json数据格式解析我自己分为两种;
一种是普通的,一种是带有数组形式的;
普通形式的:
服务器端返回的json数据格式如下:
复制代码代码如下:
{“userbean”:{“Uid”:”100196″,”Showname”:”\u75af\u72c2\u7684\u7334\u5b50″,”Avtar”:null,”State”:1}}
分析代码如下:
复制代码代码如下:
// TODO 状态处理 500 200
int res = 0;
res = httpClient.execute(httpPost).getStatusLine().getStatusCode();
if (res == 200) {
/*
* 当返回码为200时,做处理
* 得到服务器端返回json数据,并做处理
* */
HttpResponse httpResponse = httpClient.execute(httpPost);
StringBuilder builder = new StringBuilder();
BufferedReader bufferedReader2 = new BufferedReader(
new InputStreamReader(httpResponse.getEntity().getContent()));
String str2 = “”;
for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2
.readLine()) {
builder.append(s);
}
Log.i(“cat”, “” + builder.toString());
JSONObject jsonObject = new JSONObject(builder.toString())
.getJSONObject(“userbean”);
String Uid;
String Showname;
String Avtar;
String State;
Uid = jsonObject.getString(“Uid”);
Showname = jsonObject.getString(“Showname”);
Avtar = jsonObject.getString(“Avtar”);
State = jsonObject.getString(“State”);
带数组形式的:
服务器端返回的数据格式为:
复制代码代码如下:
{“calendar”:
{“calendarlist”:
[
{“calendar_id”:”1705″,”title”:”(\u4eb2\u5b50)ddssd”,”category_name”:”\u9ed8\u8ba4\u5206\u7c7b”,”showtime”:”1288927800″,”endshowtime”:”1288931400″,”allDay”:false},
{“calendar_id”:”1706″,”title”:”(\u65c5\u884c)”,”category_name”:”\u9ed8\u8ba4\u5206\u7c7b”,”showtime”:”1288933200″,”endshowtime”:”1288936800″,”allDay”:false}
]
}
}
分析代码如下:
复制代码代码如下:
// TODO 状态处理 500 200
int res = 0;
res = httpClient.execute(httpPost).getStatusLine().getStatusCode();
if (res == 200) {
/*
* 当返回码为200时,做处理
* 得到服务器端返回json数据,并做处理
* */
HttpResponse httpResponse = httpClient.execute(httpPost);
StringBuilder builder = new StringBuilder();
BufferedReader bufferedReader2 = new BufferedReader(
new InputStreamReader(httpResponse.getEntity().getContent()));
String str2 = “”;
for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2
.readLine()) {
builder.append(s);
}
Log.i(“cat”, “” + builder.toString());
/**
* 这里需要分析服务器回传的json格式数据,
*/
JSONObject jsonObject = new JSONObject(builder.toString())
.getJSONObject(“calendar”);
JSONArray jsonArray = jsonObject.getJSONArray(“calendarlist”);
for(int i=0;ijsonArray.length();i++){
JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);
CalendarInfo calendarInfo = new CalendarInfo();
calendarInfo.setCalendar_id(jsonObject2.getString(“calendar_id”));
calendarInfo.setTitle(jsonObject2.getString(“title”));
calendarInfo.setCategory_name(jsonObject2.getString(“category_name”));
calendarInfo.setShowtime(jsonObject2.getString(“showtime”));
calendarInfo.setEndtime(jsonObject2.getString(“endshowtime”));
calendarInfo.setAllDay(jsonObject2.getBoolean(“allDay”));
calendarInfos.add(calendarInfo);
}
总结,普通形式的只需用JSONObject ,带数组形式的需要使用JSONArray 将其变成一个list。
Android studio在logcat中打印日志json显示不全的问题解决方案
问题:android studio的logcat中一次打印的数据有4M(4*1024k)的显示,如果json中的数据大于这个限制,就会显示不全。
解决方案:
导出日志查看,这里推荐一种使用notepad++查看的方式:
如何关联json格式的数据
思路:把你的json首先需要找到分割,比如你的字段之间的分隔符、json之间的分隔符
参考这个例子尝试下:
CREATE TABLE login_struct (
ip STRING,
user structuid:bigint,name:string
)
PARTITIONED BY (dt STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
COLLECTION ITEMS TERMINATED BY ‘|’
MAP KEYS TERMINATED BY ‘:’
STORED AS TEXTFILE;
复制代码
user是一个struct,分别包含用户uid和用户名。
输出hive表对应的数据
printf “%s,%s|%s|\n” 192.168.1.1 3105007010 blue login_struct.txt
printf “%s,%s|%s|\n” 192.168.1.2 3105007012 ggjucheng login_struct.txt
login_struct.txt的内容:
# cat login_struct.txt
192.168.1.1,3105007010,wow:10|cf:1|qqgame:2
192.168.1.2,3105007012,wow:20|cf:21|qqgame:22
加载数据到hive表
LOAD DATA LOCAL INPATH ‘/home/hadoop/login_struct.txt’ OVERWRITE INTO TABLE login_struct PARTITION (dt=’20130101′);
查看数据
select ip,user from login_struct where dt=’20130101′;
192.168.1.1 {“uid”:3105007010,”name”:”blue”}
192.168.1.2 {“uid”:3105007012,”name”:”ggjucheng”}
使用struct
select ip,user.uid,user.name from login_map where dt=’20130101′;
你尝试下这样
select ip,user.uid,user.name from login_map where user.uid=’x’;
JSON必知必会
1、JSON基于JavaScript对象字面量
所谓字面量,是对数据值的具体表示。它的字面意思与其想要表达的意思是完全一致的。
2、名称-值对
计算机世界里,名称-值对也被称为键-值对、属性-值对或字段-值对,它们都表示一个意思。
3、正确的JSON语法
示例:
4、JSON文件使用.json 拓展名
5、JSON媒体类型是application/json
1、对象数据类型
JSON中的对象数据类型非常简单。追根溯源,JSON本身就是对象,也就是被花括号包裹的名称-值对的列表。对象可以嵌套。
2、字符串类型
简单的字符串类型,比如前面提到的”cat”我就不多说了 ,下面重点讲一下稍微复杂一点的。在这之前,我觉得有必要说一下解析器是如何读JSON
的。对于解析器来说,当一个值以双引号(”)开始时,它希望接下来的字符串文本以另一个双引号结尾。这意味着这段字符串本身包含
双引号可能会出错。我不知道你是否理解我的意思,我们看一个例子吧:
3、数字类型
4、布尔类型
5、null类型
6、数组类型
JSON中的数组类型呢也是一个比较重要的类型,上面用的不多的我就不细说,你记住就好。废话不多说,先来看一个例子吧:
1、跨站请求伪造CSRF:
拓展一下:
顶层JSON数组指存在于JSON名称-至对之外的位于文档最顶层的JSON数组
2、跨站脚本攻击XSS
3、安全漏洞:决策上的失误
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/300886.html