`
eagletony
  • 浏览: 42033 次
  • 来自: ...
社区版块
存档分类
最新评论

java中JSON数据的解析

阅读更多
package com.sinoufc.base.realtimeMonitor;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.sinoufc.base.org.json.JSONArray;
import com.sinoufc.base.org.json.JSONException;
import com.sinoufc.base.org.json.JSONObject;
import com.sinoufc.base.permission.baseinfo.dao.BaseInfoDao;
import com.sinoufc.framework.cache.Global;
import com.sinoufc.framework.exception.SystemException;

public class ResolveJSONForShell {
	private  BaseInfoDao baseInfoDao=(BaseInfoDao) Global.getSpringBean("baseInfoDao");
	
		public static List<String[]> resolveJSONForAllUsers(String ipaddress,String realtimePath) throws IOException{
			String shellvalue = executeShell(ipaddress,"host_all_users","",realtimePath);
			String ss="{'returncode': 0, 'response': [['qm', 'pts/0', '08:41', '38:09m', '2:16m', '0.58s', '-bash&#10;&#10;&#10;'],"
			+"['qm', 'pts/1', '10:07', '0.00s', '0.68s', '0.10s', 'java&#10;Shell&#10;192.&#10;'],"
			+"['qm', 'pts/2', '11:02', '3:43', '0.20s', '0.20s', '-bash&#10;&#10;&#10;'], "
			+"['qm', 'pts/3', '13:33', '49:54m', '1:21m', '0.02s', 'sshd:&#10;qm&#10;[priv]&#10;']], 'time:': 1289890011}";
			String nullStr="{'returncode': 0, 'response': [['', '', '', '', '', '', '']]}";
			if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
				shellvalue=nullStr;
			}
			List<String[]> userlist=new ArrayList<String[]>();
			 try{
				 JSONObject jsonObj = new JSONObject(shellvalue);
				 JSONArray array= jsonObj.getJSONArray("response");
				 for(int i=0;i<array.length();i++){
					 String[] alluserStr={(String)array.getJSONArray(i).get(0),(String) array.getJSONArray(i).get(1),
							 (String)array.getJSONArray(i).get(2),(String)array.getJSONArray(i).get(3),
							 (String)array.getJSONArray(i).get(4),(String)array.getJSONArray(i).get(5),
							 (String)array.getJSONArray(i).get(6)};
					 userlist.add(alluserStr);
				 }
			}catch(JSONException je){
				je.printStackTrace();
				throw new SystemException("连接不上主机或者没有数据!");
			}
			return userlist;
		}
	
		public static List<String[]> resolveJSONForDiskSpaceWithTab(String ipaddress,String realtimePath)throws JSONException, IOException{
			 String shellvalue = executeShell(ipaddress,"host_disk_space","",realtimePath);
			 String nullStr="{'returncode': 0, 'response': [['', '', '', '', '', '']], "
		                              + "'time:': 1289891593}";
			 if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
					shellvalue=nullStr;
				}
			 List<String[]> diskSpacelist=new ArrayList<String[]>();
			 try{
				 JSONObject jsonObj = new JSONObject(shellvalue);
				 JSONArray array= jsonObj.getJSONArray("response");
				
				 for(int i=0;i<array.length();i++){
					 String[] alluserStr={ (String)array.getJSONArray(i).get(0),(String) array.getJSONArray(i).get(1),
							 (String)array.getJSONArray(i).get(2),(String)array.getJSONArray(i).get(3),
							 (String)array.getJSONArray(i).get(4),(String)array.getJSONArray(i).get(5)};
					 diskSpacelist.add(alluserStr);
				 }
				 
			}catch(JSONException je){
				je.printStackTrace();
				throw new SystemException("连接不上主机或者没有数据!");
			}
			return diskSpacelist;
		}
		
		public static List<String[]> resolveJSONForProcessesSnapshot(String ipaddress,String realtimePath)throws JSONException, IOException{
			 String shellvalue = executeShell(ipaddress,"host_processes_snapshot","",realtimePath);

			String nullStr="{'returncode': 0, 'response': [['', '', '', '', '', '', '', '', '', '', '']], 'time:': 1289891863}";
			if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
					shellvalue=nullStr;
				}
			List<String[]> processlist=new ArrayList<String[]>();
			try{
				 JSONObject jsonObj = new JSONObject(shellvalue);
				 JSONArray array= jsonObj.getJSONArray("response");
				 
				 for(int i=0;i<array.length();i++){
					 String[] processStr={(String) array.getJSONArray(i).get(0),(String) array.getJSONArray(i).get(1),
							 (String)array.getJSONArray(i).get(2),(String)array.getJSONArray(i).get(3),
							 (String)array.getJSONArray(i).get(4),(String)array.getJSONArray(i).get(5),
							 (String)array.getJSONArray(i).get(6), (String)array.getJSONArray(i).get(7),
							 (String)array.getJSONArray(i).get(8), (String)array.getJSONArray(i).get(9),
							 (String)array.getJSONArray(i).get(10)};
					 processlist.add(processStr);
				 }
			}catch(JSONException je){
				je.printStackTrace();
				throw new SystemException("连接不上主机或者没有数据!");
			}
			 return processlist;
			 
		}
		
		public static String[] resolveJSONForSwapSpace(String ipaddress,String realtimePath) throws JSONException, IOException{
		    String shellvalue = executeShell(ipaddress,"host_swap_space","",realtimePath);
			System.out.println("----------shellvalue:"+shellvalue);
		    String nullStr = "{'returncode': 0, 'response': [['', '', '']], 'time:': 1289381310}";
		    if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
				shellvalue=nullStr;
			}
		    String[] swapSpaceString = new String[3];
			try{
			  JSONObject jsonObj = new JSONObject(shellvalue);
			  JSONArray array= jsonObj.getJSONArray("response");
			  
			  System.out.println(array);
			  System.out.println("used:"+(array.getJSONArray(0).get(1)));
			  System.out.println("free:"+(array.getJSONArray(0).get(2)));
			  swapSpaceString[0]=(String) array.getJSONArray(0).get(1);
			  swapSpaceString[1]=(String)array.getJSONArray(0).get(2);
			  swapSpaceString[2]=(String)array.getJSONArray(0).get(0);
			}catch(JSONException je){
				je.printStackTrace();
				throw new SystemException("连接不上主机或者没有数据!");
			}
			  return swapSpaceString;
		}
		public static Map<String,String> resolveJSONForCPUPerformance(String ipaddress,String realtimePath) throws IOException, JSONException{
			Map<String,String>  map =new HashMap<String,String>();
			
			String shellvalue = executeShell(ipaddress,"host_cpu_performance","",realtimePath);
			String nullStr="{'returncode': 0, 'response': [['', '', '', '']], 'time:': 1289878737}";
			if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
					shellvalue=nullStr;
				}
			try{
			 JSONObject jsonObj = new JSONObject(shellvalue);
			 JSONArray array= jsonObj.getJSONArray("response");
			 map.put("usertime", (String) array.getJSONArray(0).get(0));
			 map.put("systemtime", (String) array.getJSONArray(0).get(1));
			 map.put("wio", (String) array.getJSONArray(0).get(2));
			 map.put("freetime", (String) array.getJSONArray(0).get(3));
			}catch(JSONException je){
				je.printStackTrace();
				throw new SystemException("连接不上主机或者没有数据!");
			}
			return map;
		}
		public static String resolveJSONForCPUUtilization(String ipaddress,String realtimePath) throws IOException{
		//	String jsonar ="["+randomNum()+"]";
			String shellvalue = executeShell(ipaddress,"host_cpu_performance","cpu_utilization",realtimePath);
			if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
				shellvalue="[ ]";
			}
			System.out.println("resolveJSONForCPUUtilization:"+shellvalue);
			return shellvalue.substring(1,shellvalue.length()-1);
		}
		public static Map resolveJSONForDiskSpace(String ipaddress,String realtimePath) throws JSONException, IOException{
			 String shellvalue = executeShell(ipaddress,"host_disk_space","",realtimePath);
			 Map map=new HashMap();
			 try{
				List<String[]> diList=new ArrayList<String[]>();
				List<Double[]> dataList=new ArrayList<Double[]>();
				List<String> groupList=new ArrayList<String>();
			
				JSONObject jsonObj = new JSONObject(shellvalue);
				JSONArray array= jsonObj.getJSONArray("response");
				
				for(int i=0;i<array.length();i++){				
					String[] arrays={(String) array.getJSONArray(i).get(1),
							((String) array.getJSONArray(i).get(2)),
							((String) array.getJSONArray(i).get(3)),
							((String) array.getJSONArray(i).get(5))};
					diList.add(arrays);
				}
				
				for(String[] a: diList){
					
					Double[] data={Double.parseDouble(a[0])/1024,Double.parseDouble(a[1])/1024,Double.parseDouble(a[2])/1024};
					dataList.add(data);
					groupList.add(a[3]);
				}
				
				double[][] dataArg=new double[3][dataList.size()];
				
				for(int i=0;i<dataList.size();i++){
					
					System.out.println((dataList.get(i))[0]);
					System.out.println((dataList.get(i))[1]);
					System.out.println((dataList.get(i))[2]);
					
					dataArg[0][i]=(dataList.get(i))[0];
					dataArg[1][i]=(dataList.get(i))[1];
					dataArg[2][i]=(dataList.get(i))[2];
				}
				List rowList=new ArrayList();
				rowList.add("all");
				rowList.add("used");
				rowList.add("free");
				
				
				map.put("dataArg",dataArg);
				map.put("groupList", groupList);
				map.put("rowList", rowList);
			 }catch(Exception e){
				 e.printStackTrace();
				 throw new SystemException("连接不上主机或者没有数据!");
			 }
			return map;
		}
		
		
		
		public static String[] resolveJSONForMemoryPerformance(String ipaddress,String realtimePath) throws IOException, JSONException{
			String shellvalue = executeShell(ipaddress,"host_memory_performance","",realtimePath);
			 String nullStr = "{'returncode': 0, 'response': [['', '', '']], 'time:': 1289891288}";
			 if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
					shellvalue=nullStr;
				}
			 String[] memoryString=new String[3];
			 try{
			  JSONObject jsonObj = new JSONObject(shellvalue);
			  JSONArray array= jsonObj.getJSONArray("response");	 
			  	memoryString[0]=(String)array.getJSONArray(0).get(0);
			  	memoryString[1]=(String) array.getJSONArray(0).get(1);
			  	memoryString[2]=(String)array.getJSONArray(0).get(2);
			 }catch(JSONException je){
					je.printStackTrace();
					throw new SystemException("连接不上主机或者没有数据!");
				}
			return memoryString;
		}
		
		public static String[] resolveJSONForMemoryUsed(String ipaddress,String realtimePath) throws IOException, JSONException{
			String shellvalue = executeShell(ipaddress,"host_memory_performance","",realtimePath);
			 String[] memoryUsedStr=new String[2];
			 String nullStr = "{'returncode': 0, 'response': [['', '', '']], 'time:': 1289891288}";
			 if((null==shellvalue)||shellvalue.equals("1")||shellvalue.equals("")){
					shellvalue=nullStr;
				}
			 try{
				 JSONObject jsonObj = new JSONObject(shellvalue);
				  JSONArray array= jsonObj.getJSONArray("response");
				  memoryUsedStr[0]=(String)array.getJSONArray(0).get(0);
				  memoryUsedStr[1]=(String) array.getJSONArray(0).get(1);
				  System.out.println("shellvalue"+shellvalue);
				}catch(JSONException je){
					je.printStackTrace();
					throw new SystemException("连接不上主机或者没有数据!");
			}
			return memoryUsedStr;
		}
		
		
		
		
		

		 public static String executeShell(String ip,String var1,String var2,String realtimePath) throws IOException {
             StringBuffer stringBuffer = new StringBuffer();
             String line="";
             InputStreamReader ir=null;
             LineNumberReader input=null;
             
            // HttpServletRequest request = (HttpServletRequest) ActionContext
     		//.getContext().get(ServletActionContext.HTTP_REQUEST);
            // String root=request.getRealPath("/Shell");
           //  System.out.println("Reallllllllllllllpath:"+root);
             //String  filePath=null;
           /* try{
            	filePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();
 				filePath =filePath.replace("WEB-INF/classes/", "");
             System.out.println("filePath@@@@@@@@@@@:"+filePath);
            }catch(Exception e){
            	e.printStackTrace();
            }*/
            // String path = httpServletRequest.getRealPath("/");
             try {
                            Process pid = null;
                            //String[] cmd = {"/bin/bash","-c","./shell/test.sh "+ip+" "+var1+" "+var2}; ----ok
                          //String[] cmd = {"/bin/bash ","-c ","./shell/test.sh "+ip+" "+var1+" "+var2}; ----ng
                           //String[] cmd = {"/bin/bash","","./shell/test.sh "+ip+" "+var1+" "+var2};    ----ng
                            //String[] cmd = {"sh","-c","./shell/test.sh "+ip+" "+var1+" "+var2};        ----ng
                            String filePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();
                       	 filePath =filePath.replace("WEB-INF/classes/", "");
                            String[] cmd = {"/bin/bash","-c",filePath+"shell/test.sh "+ip+" "+var1+" "+var2};
                            //String[] cmd = {"/bin/bash","-c","./shell/hello.sh "+ip+" "+var1+" "+var2};
                            System.out.println("****************"+cmd[0]+cmd[1]+cmd[2]);
                                    pid = Runtime.getRuntime().exec(cmd);
                                    if (pid != null) {
                                             ir=new InputStreamReader(pid.getInputStream());
                                             input = new LineNumberReader (ir);
                                           
                                           line = input.readLine();
                                           System.out.println(line);
                                    } 
                    } catch (Exception ioe) {
                            stringBuffer.append(ioe.getMessage());
                    }finally{
                    	ir.close();
                    	input.close();
                    }
              return line;
     } 
   
		private static int randomNum()   
	    {      
	        System.out.println((Math.random()*10000+50000));         
	        return (int)(Math.random()*10000+50000);   
	    }
	/*	public  static void  main(String[] arg) throws IOException{
			 executeShell(arg[0],arg[1],arg[2]);
		 }	 */

}
分享到:
评论

相关推荐

    Java组装json和java解析json数组

    附件内容为:Java组装map数据,然后转换为json数据格式;Java解析json数据

    java 解析 json文件 java 解析 json文件

    2. Gson:Gson是Google提供的库,能够将Java对象转换为JSON格式的字符串,以及将JSON数据转换回等效的Java对象。Gson的主要优势在于其简单易用的API。 3. JSON-P(Java API for JSON Processing):这是Java标准API...

    Android_JSON数据解析

    本篇将详细讲解如何在Android应用中解析JSON数据,主要涉及以下几个方面: 1. JSON基本结构 JSON由两种基本结构构成:对象(Object)和数组(Array)。对象是以花括号 `{}` 包围的键值对集合,键用双引号括起,如`...

    Android中Json数据解析

    本教程将深入探讨在Android中如何解析和处理JSON数据。 首先,我们需要理解JSON的基本结构。JSON是一种基于键值对的数据表示方式,主要由对象(Object)和数组(Array)构成。对象用花括号 `{}` 包裹,键值对以冒号...

    java解析JSON数据

    使用该方法可以轻松解析JSON数组,方便取出JSON数据

    JAVA 解析JSON格式数据

    本篇文章将深入探讨如何在Java中解析JSON格式的数据,我们将参考提供的博文链接进行讲解。 首先,Java中解析JSON主要有两个主流库:Jackson和Gson。Jackson是目前最流行的Java JSON库之一,它提供了高性能和丰富的...

    java解析json数据

    Java中解析JSON数据主要依赖于一些库,如org.json库(包含JSONObject和JSONArray类)。 在Java中,解析JSON数据的步骤通常分为以下几个部分: 1. **导入相关库**:首先,你需要在项目中引入JSON库。如果是使用...

    java解析json完整案例

    以上就是使用Java解析JSON的基本操作,包括从字符串、文件或网络获取JSON数据,以及将Java对象序列化为JSON。在实际项目中,你可能还需要处理更复杂的JSON结构,比如嵌套的对象和数组,以及处理错误情况。对于更复杂...

    java解析json格式数据 json.jar

    在Java开发中,处理JSON数据是必不可少的一项技能。`json.jar` 是一个专为Java设计的JSON解析库,它包含了一系列API,帮助开发者高效地解析和生成JSON格式的数据。 在`json.jar` 中,主要的类和接口包括: 1. **...

    kettle解析json串

    通过以上步骤,我们可以在Kettle中有效地解析JSON数据,并将其写入数据库中。这不仅可以提高数据处理的效率,还可以确保数据的一致性和准确性。此外,使用Java库如`JSON Simple`可以更加灵活地处理各种类型的JSON...

    C#像java一样优雅的解析JSON数据

    C#的一个解析JSON的工具类,像java一样优雅的解析JSON数据,包含有JSONObject和JSONArray对象。 JSONObject json = new JSONObject(); json.Put("sex", "男"); json.Put("age", 123); json.Put("name", "张三"); ...

    JAVA解析JSON数据

    本篇文章将深入探讨如何在Java中解析JSON数据。 首先,我们需要一个JSON库来帮助我们进行解析工作。Java标准库并不内置JSON处理功能,但有多个开源库可供选择,如Gson、Jackson、org.json和JSON-P。这里我们以广泛...

    Java解析JSON文本,大数据量工具包

    解决当内存资源不充足时大数据量的JSON文本解析为JSON对象会导致内存溢出的问题。 基于org.json的部分源代码,以及新增的JsonLazyer类。 原理:用时创建的规则降低传统解析器一次性将文本转成Java对象而占用大量内存...

    Java实现json数据导入到Excel的方法

    本Java类实现了将标准的json字符串转换成map,并将数据解析到Excel的方法,本方法简单实用,可以批量导出数据到Excel文档中

    Java Json解析,Java Web Json解析,Java Web服务端获取Json数据,客户端通过HTTP获取Json数据

    对于Java Web服务端获取JSON数据,通常涉及到Servlet、JSP或Spring MVC等框架。当客户端通过HTTP请求发送JSON数据时,服务端需要解析这些数据。例如,在Servlet中,可以使用HttpServletRequest的getInputStream方法...

    Java Http请求传json数据乱码问题的解决

    以下将详细介绍在Java中如何解决HTTP请求传输JSON数据出现乱码的问题。 首先,我们了解乱码出现的原因。HTTP协议是基于ASCII的,而在HTTP协议中传输中文字符时,如果没有明确指定字符编码,服务器和浏览器可能会...

    android中JSON数据解析

    在Android开发中,JSON...总的来说,Android中的JSON数据解析是通过理解JSON结构,结合`org.json`库或Gson库,以及适当的网络请求库来实现的。合理使用这些工具,能有效地处理和展示从服务器获取的JSON数据。

    json库-java解析json数据类库

    在Java中,有许多库可以用来解析和生成JSON数据,其中最常用的包括Jackson、Gson、org.json和Fastjson等。本篇文章将详细介绍这些JSON库的使用方法以及它们的特点。 1. **Jackson** Jackson是Java开发中最流行的...

    Android 实用的数据json数据解析封装类

    本篇文章将详细介绍如何创建一个实用的JSON数据解析封装类,以便快速有效地处理各种形式的JSON数据。 首先,我们需要引入一个JSON库,Android SDK本身包含了org.json库,但为了更强大的功能和更好的性能,推荐使用...

    java解析json的jar包

    此压缩包包含两个jar:json-lib-2.4-jdk15.jar和ezmorph-1.0.6.jar 这两个包都是java解析json数据的依赖包,而且是最新版,开源的东东好多人还要分,俺不要分,只希望对你有用。

Global site tag (gtag.js) - Google Analytics