下面列出了com.alibaba.fastjson.JSONArray#get ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* @param jsonStr
* @param changeType 0加密 or 1解密
* @return jsonStr
*/
public static String changeJson(String jsonStr, Integer changeType) {
JSONObject json = JSONObject.parseObject(jsonStr);
JSONObject job = json.getJSONObject("job");
JSONArray contents = job.getJSONArray("content");
for (int i = 0; i < contents.size(); i++) {
String contentStr = contents.getString(i);
Object obj = contents.get(i);
if (decrypt.equals(changeType)) { //解密
((JSONObject) obj).put("reader", change(contentStr, "reader", decrypt));
((JSONObject) obj).put("writer", change(contentStr, "writer", decrypt));
} else if (encrypt.equals(changeType)) {//加密
((JSONObject) obj).put("reader", change(contentStr, "reader", encrypt));
((JSONObject) obj).put("writer", change(contentStr, "writer", encrypt));
}
}
job.put("content", contents);
json.put("job", job);
return json.toJSONString();
}
@Override
public URI getLiveVideoInfoUrl(ChannelInfo channelInfo) throws Exception {
String channelName = channelInfo.getChannelUrl().replace("https://www.openrec.tv/user/", "");
URI moviesUrl = new URI(GET_MOVIES_API + "?channel_id=" + channelName + "&sort=onair_status");
String moviesJson = HttpRequestUtil.downloadUrl(moviesUrl, channelInfo != null ? channelInfo.getCookies() : null, Collections.emptyMap(), StandardCharsets.UTF_8);
JSONArray movies = JSON.parseArray(moviesJson);
if (!movies.isEmpty()) {
JSONObject movieObj = (JSONObject) movies.get(0);
Integer onAirStatus = movieObj.getInteger("onair_status");
if (onAirStatus == 1) {
String videoId = movieObj.getString("id");
return new URI(GET_VIDEO_INFO_URL + videoId);
}
}
return null;
}
@Test
public void testNavBuilder() throws Exception {
MockHttpServletRequestBuilder builder = MockMvcRequestBuilders
.get("/rebuild")
.sessionAttr(WebUtils.CURRENT_USER, UserService.ADMIN_USER);
HttpServletRequest request = builder.buildRequest(new MockServletContext());
JSONArray navForPortal = NavBuilder.instance.getNavPortal(request);
System.out.println("testPortalNav .......... \n" + navForPortal.toJSONString());
if (!navForPortal.isEmpty()) {
JSONObject firstNav = (JSONObject) navForPortal.get(0);
String navHtml = NavBuilder.instance.renderNavItem(firstNav, "home");
System.out.println(navHtml);
}
}
/**
* 这里可能不是特别合理,只为实现功能
*/
private Integer getOperationGroupId(Object[] args){
Object arg = args[0];
Integer operationGroupId = -1;
if (arg instanceof JSONObject){
operationGroupId = (Integer)((JSONObject)arg).get("groupId");
}else{
if (arg instanceof List) {
JSONArray argArray = (JSONArray)JSONObject.toJSON(arg);
JSONObject jsonObject = (JSONObject)argArray.get(0);
operationGroupId = (Integer)jsonObject.get("groupId");
}else {
if (arg instanceof InstallationParam){
InstallationParam installationParam = (InstallationParam)arg;
Cluster cluster = installationParam.getCluster();
operationGroupId = cluster.getGroupId();
}else{
JSONObject argJson = (JSONObject)JSONObject.toJSON(arg);
operationGroupId = (Integer)argJson.get("groupId");
}
}
}
return operationGroupId;
}
public void importRulesByTableId(Integer tableId, String json) {
JSONArray jsonArray = JSONArray.parseArray(json);
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject groupRules = (JSONObject) jsonArray.get(i);
DataTableRuleGroup dataTableRuleGroup = new DataTableRuleGroup();
dataTableRuleGroup.setTableId(tableId);
dataTableRuleGroup.setGroupName(groupRules.getString("groupName"));
dataTableRuleGroup.setStatus("inactive");
dataTableRuleMapper.addGroup(dataTableRuleGroup);
JSONArray rules = groupRules.getJSONArray("rules");
int order = 0;
ArrayList<DataTableRule> dataTableRules = new ArrayList<>();
for (int j = 0; j < rules.size(); j++) {
JSONObject rule = (JSONObject) rules.get(j);
DataTableRule dataTableRule = new DataTableRule();
dataTableRule.setGroupId(dataTableRuleGroup.getId());
dataTableRule.setOrderId(order);
dataTableRule.setRuleTypeName(rule.getString("ruleTypeName"));
dataTableRule.setRuleGrammar(rule.getString("ruleGrammar"));
dataTableRules.add(dataTableRule);
order++;
}
dataTableRuleMapper.saveAllRules(dataTableRules);
}
}
/**
* 解密JSON数组对象
*
* @param secretKey 密钥
* @param jsonArray JSON数组
* @return
*/
public JSONArray aesJsonArray(String secretKey, JSONArray jsonArray) {
for (int i = 0; i < jsonArray.size(); i++) {
//判断是否为JSON对象
if (jsonArray.get(i) instanceof JSONObject) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
//变更JSON数组对象
jsonArray.set(i, aesJsonObject(secretKey, jsonObject));
} else {
//非JSON对象直接执行解密
jsonArray.set(i, aesDecrypt(secretKey, jsonArray.getString(i)));
}
}
return jsonArray;
}
private URL[] getUrls(String key, JSONObject json) throws MalformedURLException {
String classPath = FastJsonUtils.getString(json, key);
JSONArray urls = JSONArray.parseArray(classPath);
URL[] data = new URL[urls.size()];
for (int i = 0; i < urls.size(); i++) {
Object object = urls.get(i);
data[i] = new URL(object == null ? "" : (String) object);
}
return data;
}
/**
* convert query result data to JSON format.
*
* @param request http request
* @param response http response
* @return data in JSON format
*/
@RequestMapping(value = "/query")
@ResponseBody
public String query(HttpServletRequest request, HttpServletResponse response) {
String targetStr = "target";
response.setStatus(200);
try {
JSONObject jsonObject = getRequestBodyJson(request);
Pair<ZonedDateTime, ZonedDateTime> timeRange = getTimeFromAndTo(jsonObject);
JSONArray array = (JSONArray) jsonObject.get("targets"); // []
JSONArray result = new JSONArray();
for (int i = 0; i < array.size(); i++) {
JSONObject object = (JSONObject) array.get(i); // {}
if (!object.containsKey(targetStr)) {
return "[]";
}
String target = (String) object.get(targetStr);
String type = getJsonType(jsonObject);
JSONObject obj = new JSONObject();
obj.put("target", target);
if (type.equals("table")) {
setJsonTable(obj, target, timeRange);
} else if (type.equals("timeserie")) {
setJsonTimeseries(obj, target, timeRange);
}
result.add(i, obj);
}
logger.info("query finished");
return result.toString();
} catch (Exception e) {
logger.error("/query failed", e);
}
return null;
}
public List formatArgs(JSONArray args) {
List list = new ArrayList();
if (args != null) {
for (int i = 0; i < args.size(); i++) {
JSONObject jo = (JSONObject)args.get(i);
list.add(hexToString(JSONObject.parseObject(jo.get("Arg").toString()).get("Parameter").toString()));
}
}
return list;
}
private static List<String> flattenArray(String wkVal) {
List<String> rows = new ArrayList<>();
if (StringUtils.isNoneEmpty(wkVal)) {
JSONArray jsonArray = JSON.parseArray(wkVal);
for (int i = 0; i < jsonArray.size(); i++) {
Object item = jsonArray.get(i);
if (item != null) {
rows.add(jsonArray.get(i).toString());
} else {
rows.add(StringUtils.EMPTY);
}
}
}
return rows;
}
private ArrayList<String> getStormSupervisors() {
ArrayList<String> list = new ArrayList<>();
try {
JSONArray supervisors = JSONObject.parseObject(stormTopoHelper.supervisorSummary()).getJSONArray("supervisors");
for (int i = 0; i < supervisors.size(); i++) {
JSONObject supervisor = (JSONObject) supervisors.get(i);
list.add(supervisor.getString("host"));
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return list;
}
private Object[] prepareArguments(Type[] paramClazzs, JSONArray args) throws Exception {
Object[] params = new Object[paramClazzs.length];
Object value;
Type paramClazz;
for (int i = 0; i < paramClazzs.length; i++) {
paramClazz = paramClazzs[i];
if(i>=args.size()){
if(!paramClazz.getClass().isPrimitive()) {
params[i] = null;
continue;
}else {
throw new Exception("[prepareArguments] method argument list not match.");
}
}
value = args.get(i);
if (paramClazz == JSONObject.class) {
params[i] = value;
} else if(JSCallback.class == paramClazz){
if(value instanceof String){
params[i] = new SimpleJSCallback(mInstanceId,(String)value);
}else{
throw new Exception("Parameter type not match.");
}
} else {
params[i] = WXReflectionUtils.parseArgument(paramClazz,value);
}
}
return params;
}
private Object[] prepareArguments(Type[] paramClazzs, JSONArray args) throws Exception {
Object[] params = new Object[paramClazzs.length];
Object value;
Type paramClazz;
for (int i = 0; i < paramClazzs.length; i++) {
paramClazz = paramClazzs[i];
if(i>=args.size()){
if(!paramClazz.getClass().isPrimitive()) {
params[i] = null;
continue;
}else {
throw new Exception("[prepareArguments] method argument list not match.");
}
}
value = args.get(i);
if (paramClazz == JSONObject.class) {
params[i] = value;
} else if(JSCallback.class == paramClazz){
if(value instanceof String){
params[i] = new SimpleJSCallback(mInstanceId,(String)value);
}else{
throw new Exception("Parameter type not match.");
}
} else {
params[i] = WXReflectionUtils.parseArgument(paramClazz,value);
}
}
return params;
}
private void parseJson(String content) {
JSONObject jason = JSONObject.parseObject(content);
JSONArray data = jason.getJSONArray("items");
int totalCount = Integer.parseInt(jason.getString("count"));
mDetailInfoList.clear();
for (int i = 0; i < data.size(); i++) {
DetailInfo info = new DetailInfo();
JSONObject jsonObj = (JSONObject) data.get(i);
String infotext = jsonObj.getString("infotext");
String url = jsonObj.getString("poster");
String title = jsonObj.getString("title");
info.setPoster(url);
info.setInfotext(infotext);
info.setTitle(title);
mDetailInfoList.add(info);
Log.d(TAG, "parseJson mDetailInfoList " + mDetailInfoList.size());
}
for (int j = 0; j < mDetailInfoList.size(); j++) {
Log.d(TAG, "parseJson mDetailInfoList : " + j + "content : " + mDetailInfoList.get(j).toString());
}
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d(TAG, ">> performData");
mOnDataFinishedListener.onPerformData();
}
});
}
@Override
public List<HeartbeatDO> queryHeartbeatList(String appGroupName, String appName, String point, Date startTime,
Date endTime) {
List<HeartbeatDO> result = Lists.newArrayList();
if (StringUtils.isBlank(appGroupName) || StringUtils.isBlank(appName) || StringUtils.isBlank(point) || startTime == null || endTime == null) {
return null;
}
/**
* 构建influxdb的查询字符串
*/
String queryStr = buildQueryString(appGroupName, appName, point, startTime, endTime);
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("q", queryStr);
ResponseEntity<String> exchange = restTemplate.exchange(queryUrl, HttpMethod.POST, new HttpEntity<>(params,
null), String.class);
if (!exchange.getStatusCode().is2xxSuccessful() || StringUtils.isBlank(exchange.getBody())) {
return null;
}
// {
// "results": [{
// "statement_id": 0,
// "series": [{
// "name": "heartbeat",
// "columns": ["time", "appGroupName", "appName", "concurrentNum", "downgradeNum", "exceptionNum",
// "ip", "point", "timeoutNum", "visitNum"],
// "values": [
// ["2019-09-15T08:45:00.844Z", "htw", "htw-order", 15, 10, 99, "10.2.2.9", "visitPoint",
// 23, 100000],
// ["2019-09-15T08:45:21.959Z", "htw", "htw-order", 15, 10, 99, "10.2.2.9", "visitPoint",
// 23, 100000]
// ]
// }
// ]
// }]
// }
/**
* todo 这块代码后续需要优化 manzhizhen
*/
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(INFLUXDB_DATE_FORMAT);
JSONObject responseJsonObject = JSONObject.parseObject(exchange.getBody());
JSONArray responseResultsJsonArray = responseJsonObject.getJSONArray("results");
JSONObject resultJsonObject = (JSONObject) responseResultsJsonArray.get(0);
JSONArray seriesJsonArray = resultJsonObject.getJSONArray("series");
JSONObject heartbeatJsonObject = (JSONObject) seriesJsonArray.get(0);
JSONArray columnsJsonArray = heartbeatJsonObject.getJSONArray("columns");
JSONArray valuesJsonArray = heartbeatJsonObject.getJSONArray("values");
List<Object> conlumsList = columnsJsonArray.toJavaList(Object.class);
List<Object> valuesList = valuesJsonArray.toJavaList(Object.class);
Map<String, Object> map = Maps.newHashMap();
for (int i = 0; i < valuesList.size(); i++) {
for (int j = 0; j < conlumsList.size(); j++) {
map.put(conlumsList.get(j).toString(), ((List) valuesList.get(i)).get(j));
}
HeartbeatDO heartbeatDO = new HeartbeatDO();
try {
heartbeatDO.setAppGroupName(map.get("appGroupName").toString());
heartbeatDO.setAppName(map.get("appName").toString());
heartbeatDO.setPoint(map.get("point").toString());
heartbeatDO.setDowngradeNum(Long.valueOf(map.get("downgradeNum").toString()));
heartbeatDO.setVisitNum(Long.valueOf(map.get("visitNum").toString()));
heartbeatDO.setExceptionNum(Long.valueOf(map.get("exceptionNum").toString()));
heartbeatDO.setTimeoutNum(Long.valueOf(map.get("timeoutNum").toString()));
heartbeatDO.setMaxConcurrentNum(Integer.valueOf(map.get("concurrentNum").toString()));
heartbeatDO.setStatisticsCycleTime(simpleDateFormat.parse(map.get("time").toString()));
result.add(heartbeatDO);
} catch (Exception e) {
logger.warn("InfluxHeartbeatDaoImpl#queryHeartbeatList 心跳数据转换异常:" + JSON.toJSONString(map), e);
}
}
return result;
}
private static List<String> flattenJsonArray(String wkVal, String path) {
List<String> rows = new ArrayList<>();
JSONObject json = JSONObject.parseObject(wkVal);
String parentPath = StringUtils.substringBeforeLast(path, ".");
String currentPath = StringUtils.substringAfterLast(path, ".");
if (json.containsKey(path)) {
parentPath = StringUtils.EMPTY;
currentPath = path;
}
Object currentJsonObj = JSONPath.read(wkVal, path);
Object parentJsonObj = null;
if (StringUtils.isBlank(parentPath)) {
parentJsonObj = json;
} else {
parentJsonObj = JSONPath.read(wkVal, parentPath);
}
if (currentJsonObj instanceof JSONArray) {
JSONArray retJsonArray = new JSONArray();
JSONArray currentJsonArray = (JSONArray) currentJsonObj;
for (int i = 0; i < currentJsonArray.size(); i++) {
JSONObject jsonItemWk = new JSONObject();
if (parentJsonObj instanceof JSONObject) {
jsonItemWk = JSONObject.parseObject(((JSONObject) parentJsonObj).toJSONString());
jsonItemWk.remove(currentPath);
}
jsonItemWk.put(currentPath, currentJsonArray.get(i));
retJsonArray.add(jsonItemWk);
}
if (json.containsKey(path)) {
for (int i = 0; i < retJsonArray.size(); i++) {
JSONObject item = (JSONObject) retJsonArray.get(i);
rows.add(item.toJSONString());
}
} else {
JSONPath.set(json, parentPath, retJsonArray);
rows.add(json.toJSONString());
}
}
return rows;
}
@Test
public void HttpGetFilterTest() {
SqlParser parser = new SqlParser();
Query q = null;
Object o = new Object();
JSONArray jsonArray = null;
int num = 0, cou = 0;
while (true) {
o = HttpUtil.HttpGet(Settings.PRESTO_QUERY);
jsonArray = JSON.parseArray(o.toString());
String queryId = null;
String query = null;
for (int i = count; i < jsonArray.size(); i++) {
System.out.println("Loop Times: " + num);
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
if (jsonObject.size() == 8) {
queryId = jsonObject.get("queryId").toString();
query = jsonObject.get("query").toString();
// System.out.println(queryId + "\t" + i + "\t" + query);
// Parser
try {
q = (Query) parser.createStatement(query);
} catch (Exception e) {
ExceptionHandler.Instance().log(ExceptionType.ERROR, "query error", e);
}
// System.out.println(q.toString());
QuerySpecification queryBody = (QuerySpecification) q.getQueryBody();
// get columns
List<SelectItem> selectItemList = queryBody.getSelect().getSelectItems();
for (SelectItem column : selectItemList) {
System.out.println(column.toString());
}
// tableName
Table t = (Table) queryBody.getFrom().get();
System.out.println(t.getName());
if (t.getName().equals("text")) {
System.out.println("Text visit: " + cou++);
}
}
}
// update count
count = jsonArray.size();
num++;
o = new Object();
}
}
@Override
public Object resolve(JSONArray array, int index) {
return array.get(index);
}
public void loadPositions(String json) {
if (StringHelper.isEmpty(json)) {
return;
}
Long inode = 0L, pos = 0L, number = 0L;
String file = "";
JSONArray positionRecords = JSONArray.parseArray(json);
for (int i = 0; i < positionRecords.size(); i++) {
JSONObject positionObject = (JSONObject) positionRecords.get(i);
inode = positionObject.getLong("inode");
pos = positionObject.getLong("pos");
file = positionObject.getString("file");
Long currentInode = 0L;
try {
currentInode = getInode(new File(file));
}
catch (IOException e1) {
log.err(this, "TailFile updatePos FAILED,getInode Fail.", e1);
}
if (!currentInode.equals(inode)) {
maybeReloadMap.remove(inode);
}
else {
// add line number
number = positionObject.getLongValue("num");
for (Object v : Arrays.asList(inode, pos, file)) {
Preconditions.checkNotNull(v, "Detected missing value in position file. " + "inode: " + inode
+ ", pos: " + pos + ", path: " + file);
}
TailFile tf = tailFiles.get(inode);
try {
if (tf != null && tf.updatePos(file, inode, pos, number)) {
tailFiles.put(inode, tf);
}
else {
// add old tail file into memory
maybeReloadMap.put(inode, new Long[] { pos, number });
if (log.isDebugEnable()) {
log.debug(this, "add old&inInterrupt file: " + file + ", inode: " + inode + ", pos: " + pos);
}
}
}
catch (IOException e) {
log.err(this, "TailFile updatePos FAILED.", e);
}
}
}
}
/**
* get JSON type of input JSON object.
*
* @param jsonObject JSON Object
* @return type (string)
* @throws JSONException JSONException
*/
public String getJsonType(JSONObject jsonObject) throws JSONException {
JSONArray array = (JSONArray) jsonObject.get("targets"); // []
JSONObject object = (JSONObject) array.get(0); // {}
return (String) object.get("type");
}