DELIMITER $$
USE `dw`$$
DROP FUNCTION IF EXISTS `fn_Json_getKeyValue`$$
CREATE DEFINER=`data`@`%` FUNCTION `fn_Json_getKeyValue`(
in_JsonArray VARCHAR(4096),#JSON数组字符串
in_Index TINYINT, #JSON对象序号,序号从1开始
in_KeyName VARCHAR(64)#键名
) RETURNS VARCHAR(512) CHARSET utf8
BEGIN
DECLARE vs_return VARCHAR(4096);
DECLARE vs_JsonArray, vs_Json, vs_KeyName VARCHAR(4096);
#declare vs_Json varchar(4096);
DECLARE vi_pos1, vi_pos2 SMALLINT UNSIGNED;
#写监控日志
#insert into dwt_etl_log(sp_name, title, description)
#values('dwfn_Json_getKeyValue', '通过Json键名取键值', concat('in_JsonArray=', in_JsonArray));
SET vs_JsonArray = TRIM(in_JsonArray);
SET vs_KeyName = TRIM(in_KeyName);
IF vs_JsonArray = '' OR vs_JsonArray IS NULL
OR vs_KeyName = '' OR vs_KeyName IS NULL
OR in_Index <= 0 OR in_Index IS NULL THEN
SET vs_return = NULL;
ELSE
#去掉方括号
SET vs_JsonArray = REPLACE(REPLACE(vs_JsonArray, '[', ''), ']', '');
#取指定的JSON对象
SET vs_json = SUBSTRING_INDEX(SUBSTRING_INDEX(vs_JsonArray,'}', in_index),'}',-1);
IF vs_json = '' OR vs_json IS NULL THEN
SET vs_return = NULL;
ELSE
SET vs_KeyName = CONCAT('"', vs_KeyName, '":');
SET vi_pos1 = INSTR(vs_json, vs_KeyName);
IF vi_pos1 > 0 THEN
#如果键名存在
SET vi_pos1 = vi_pos1 + CHAR_LENGTH(vs_KeyName);
SET vi_pos2 = LOCATE(',', vs_json, vi_pos1);
IF vi_pos2 = 0 THEN
#最后一个元素没有','分隔符,也没有结束符'}'
SET vi_pos2 = CHAR_LENGTH(vs_json) + 1;
END IF;
SET vs_return = REPLACE(MID(vs_json, vi_pos1, vi_pos2 - vi_pos1), '"', '');
END IF;
END IF;
END IF;
RETURN(vs_return);
END$$
DELIMITER ;
测试: {"old_current_score":"2","new_current_score":"0","old_grade_id":"1","new_grade_id":"1","grade_time":"2016-04-09 00:43:26","grade_upgrade_time":"2017-04-09 00:43:26"}
select fn_Json_getKeyValue(reason,1,'old_grade_id');
使用json-libjar这个工具\x0d\public String getJson(Object obj){\x0d\ JSONObject json;\x0d\ json = JSONObjectfromObject(obj);\x0d\ return jsontoString();\x0d\}\x0d\使用jquery来处理json\x0d\//转换为json数据 datas可以用ajax从后台获取上面getJson中的数据\x0d\var jsonDatas = eval("(" + datas + ")");\x0d\ //循环遍历数据\x0d\jQueryeach(jsonDatas, function(item) {\x0d\//循环\x0d\});
在 Java 中,可以使用 json 库来解析和遍历 JSON 对象。以下是一个简单的示例代码,展示如何遍历 JSON 对象并取出所有的 value 值:
假设有以下 JSON 对象:
{
"name": "张三",
"age": 20,
"gender": "male"
}
可以使用以下代码遍历 JSON 对象并取出所有的 value 值:
import orgjsonJSONObject;
public class JsonExample {
public static void main(String[] args) {
// JSON 字符串
String jsonStr = "{\"name\":\"张三\",\"age\":20,\"gender\":\"male\"}";
// 将 JSON 字符串转为 JSONObject 对象
JSONObject jsonObject = new JSONObject(jsonStr);
// 遍历 JSONObject 对象,取出所有 value 值
for (String key : jsonObjectkeySet()) {
Systemoutprintln(jsonObjectget(key));
}
}
}
输出结果如下:
张三
20
male
在上面的代码中,首先将 JSON 字符串转为 JSONObject 对象。然后,使用 keySet() 方法获取所有的键名,遍历 JSONObject 对象,使用 get() 方法获取每个键的值并输出。
java 访问一个接口得到接口返回JSON,步骤是怎么做的
写个servlet,将结果转换成ArrayJson对象,打印出这个json就行,前端通过ajax去请求获得json数据。java转json需要用到相应的jar包,百度一下吧。
java中的接口是一种特殊的类,使用关键字interface创建。接口功能完全实现后,可以打成jar包,提供给其他公司使用。
要返回json格式数据,可以把接口中抽象方法的返回值类型规定为JSONObject或JSONString类型。这样当其他公司调用时,得到的数据就是json数据了。
另外,以jar形式提供的接口,可以通过反编译得到你的源码,如果你不希望开源,就要加密了。
访问接口时code返回2怎么回事访问接口时code返回2怎么回事
一般情况接口有调用说明的,需要看接口提供方提供的说明。
AFNeorking 接口返回值类型不是json 时怎么做AF>
给题主两种思路参考:
1、内置一个浏览器内核
内置浏览器就是在抓取的程序中,启动一个浏览器内核,使我们获取到 js 渲染后的页面,这样我们就跟采集静态页面一样了。这种工具常用的有以下三种: - Selenium - HtmlUnit - PhantomJs
这些工具都能帮助我们解决数据异步加载的问题,但是他们都存在缺陷,那就是效率不高而且不稳定。
2、反向解析法
什么是反向解析法呢?我们 js 渲染页面的数据是通过 Ajax 的方式从后端获取的,我们只需要找到对应的 Ajax 请求连接就 OK,这样我们就获取到了我们需要的数据,反向解析法的好处就是这种方式获取的数据都是 json 格式的数据,解析起来也比较方便,另一个好处就是相对页面来说,接口的变化概率更小。同样它有两个不足之处,一个是在 Ajax 时你需要有耐心有技巧,因为你需要在一大推请求中找到你想要的,另一个不足的地方就是对 JavaScript 渲染的页面束手无策。
package bean;
import comgooglegsonannotationsSerializedName;
import javautilList;
public class TestBean
{
private String status;
private Msg msg;
public String getStatus() {
return status;
}
public void setStatus(String status) {
thisstatus = status;
}
public Msg getMsg() {
return msg;
}
public void setMsg(Msg msg) {
thismsg = msg;
}
public class Msg
{
private List<City> city;
public List<City> getCity() {
return city;
}
public void setCity(List<City> city) {
thiscity = city;
}
public class City
{
@SerializedName("@attributes")
private SpecialKey key;//奇怪的key处理
public SpecialKey getKey() {
return key;
}
public void setKey(SpecialKey key) {
thiskey = key;
}
public class SpecialKey
{
private String cityX;
private String cityY;
private String cityname;
private String centername;
private String fontColor;
private String pyName;
private String state1;
private String state2;
private String stateDetailed;
private String tem1;
private String tem2;
private String temLow;
private String windState;
private String windDir;
private String windPower;
private String humidity;
private String url;
public String getCityX() {
return cityX;
}
public void setCityX(String cityX) {
thiscityX = cityX;
}
public String getCityY() {
return cityY;
}
public void setCityY(String cityY) {
thiscityY = cityY;
}
public String getCityname() {
return cityname;
}
public void setCityname(String cityname) {
thiscityname = cityname;
}
public String getCentername() {
return centername;
}
public void setCentername(String centername) {
thiscentername = centername;
}
public String getFontColor() {
return fontColor;
}
public void setFontColor(String fontColor) {
thisfontColor = fontColor;
}
public String getPyName() {
return pyName;
}
public void setPyName(String pyName) {
thispyName = pyName;
}
public String getState1() {
return state1;
}
public void setState1(String state1) {
thisstate1 = state1;
}
public String getState2() {
return state2;
}
public void setState2(String state2) {
thisstate2 = state2;
}
public String getStateDetailed() {
return stateDetailed;
}
public void setStateDetailed(String stateDetailed) {
thisstateDetailed = stateDetailed;
}
public String getTem1() {
return tem1;
}
public void setTem1(String tem1) {
thistem1 = tem1;
}
public String getTem2() {
return tem2;
}
public void setTem2(String tem2) {
thistem2 = tem2;
}
public String getTemLow() {
return temLow;
}
public void setTemLow(String temLow) {
thistemLow = temLow;
}
public String getWindState() {
return windState;
}
public void setWindState(String windState) {
thiswindState = windState;
}
public String getWindDir() {
return windDir;
}
public void setWindDir(String windDir) {
thiswindDir = windDir;
}
public String getWindPower() {
return windPower;
}
public void setWindPower(String windPower) {
thiswindPower = windPower;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
thishumidity = humidity;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
thisurl = url;
}
}
}
}
}
可以使用Gson,没有可以去网上下载一个。注意bean文件的对应的类型可以改成你自己数据的类型,其实如果没有算数运算全用String最好,免得返回奇怪的东西报错。关键在于用@SerializedName("@attributes")处理奇怪的key
TestBean bean = new Gson()fromJson(json, TestBeanclass);
List<TestBeanMsgCity> cityList = beangetMsg()getCity();
for (int i = 0; i < cityListsize();i++)
{
if (cityListget(i)getKey()getCityname()equals("福州"))
{
// 这就是你要的那条“福州”的对象了
}
}
Java 读写json格式的文件方法:
一、要解决这个问题首先要知道json格式是什么?
JSON格式:
比如学生有学号,姓名,性别等。
用json表示则为:
{"studno":"11111","studname":"":"男"}(各个字段都是字符型)这代表一个学生的信息。
如果多个,如下:
[{"studno":"122222","studname":"":"男"}]这就是json格式。
二、那如何 *** 作json格式的文件呢?
解答:就是直接读写文件,再把读出来的文件内容格式化成json就可以了。
三、具体 *** 作:
1、有一个实体类,如下:
public class ElectSet {public String xueqi;
public String xuenian;
public String startTime;
public String endTime;
public int menshu;
public String isReadDB;
//{"xueqi":,"xuenian":,"startTime":,"endTime":,"renshu":,"isReadDB":}
public String getXueqi() {
return xueqi;
}
public void setXueqi(String xueqi) {
thisxueqi = xueqi;
}
public String getXuenian() {
return xuenian;
}
public void setXuenian(String xuenian) {
thisxuenian = xuenian;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
thisstartTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
thisendTime = endTime;
}
public int getMenshu() {
return menshu;
}
public void setMenshu(int menshu) {
thismenshu = menshu;
}
public String getIsReadDB() {
return isReadDB;
}
public void setIsReadDB(String isReadDB) {
thisisReadDB = isReadDB;
}
}
2有一个json格式的文件,存的就是他的信息,如下:
Setsjson:{"xuenian":"2007-2008","xueqi":"1","startTime":"2009-07-19 08:30","endTime":"2009-07-22 18:00","menshu":"10","isReadDB":"Y"}
3具体 *** 作:
/取出文件内容,填充对象
/
public ElectSet findElectSet(String path){
ElectSet electset=new ElectSet();
String sets=ReadFile(path);//获得json文件的内容
JSONObject jo=JSONObjectfromObject(sets);//格式化成json对象
//Systemoutprintln("------------" jo);
//String name = jogetString("xuenian");
//Systemoutprintln(name);
electsetsetXueqi(jogetString("xueqi"));
electsetsetXuenian(jogetString("xuenian"));
electsetsetStartTime(jogetString("startTime"));
electsetsetEndTime(jogetString("endTime"));
electsetsetMenshu(jogetInt("menshu"));
electsetsetIsReadDB(jogetString("isReadDB"));
return electset;
}
//设置属性,并保存
public boolean setElect(String path,String sets){
try {
writeFile(path,sets);
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
return false;
}
}
//读文件,返回字符串
public String ReadFile(String path){
File file = new File(path);
BufferedReader reader = null;
String laststr = "";
try {
//Systemoutprintln("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
//一次读入一行,直到读入null为文件结束
while ((tempString = readerreadLine()) != null) {
//显示行号
Systemoutprintln("line " line ": " tempString);
laststr = laststr tempString;
line ;
}
readerclose();
} catch (IOException e) {
eprintStackTrace();
} finally {
if (reader != null) {
try {
readerclose();
} catch (IOException e1) {
}
}
}
return laststr;
}
//把json格式的字符串写到文件
public void writeFile(String filePath, String sets) throws IOException {
FileWriter fw = new FileWriter(filePath);
PrintWriter out = new PrintWriter(fw);
outwrite(sets);
outprintln();
fwclose();
outclose();
}
4调用,使用(在网站的controller里调用的):
//取出json对象public void GetElectSettings(>
以上就是关于如何在java中获取mysql5.7版本里的json-CSDN论坛全部的内容,包括:如何在java中获取mysql5.7版本里的json-CSDN论坛、怎样从java后台获取json字符串并转换为json对象输出、java遍历json对象取出所有value值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)