读取JSON字符串中的一维、二维数组数据

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
//从文件中读取数据创建JSON字符串 对象filePath = "levels/data1.txt"
public JSONObject createJSON(Context context, String filePath)
{
	JSONObject json = null;
	
	try 
	{
		InputStream fileIn = context.getAssets().open(filePath);
		byte[] tmp = new byte[fileIn.available()];
		fileIn.read(tmp);
		String data = new String(tmp, "UTF-8");
		fileIn.close();
		
		json = new JSONObject(data);
	}
	catch (Exception e) 
	{
		e.printStackTrace();
	}
	
	return json;
}
//从json中, 读取属性名为str的数据, 到一维数组Data中
public int[] readOneDimensionDataInt(JSONObject json, String str)
{
	int[] Data = null;
	try 
	{
		boolean b = json.has(str);
		if(json.has(str))
		{
			JSONArray Array1 = json.getJSONArray(str);	//获取属性名对应的一维数组
			Data = new int[Array1.length()];			//创建数组
			
			for(int j = 0; j < Array1.length(); j ++)
				Data[j] = Array1.getInt(j);				//获取一维数组中的数据
		}
	} 
	catch (JSONException e) 
	{
		e.printStackTrace();
	}
	return Data;
}
//从json中, 读取属性名为str的数据, 到二维数组Data中
public int[][] readTwoDimensionDataInt(JSONObject json, String str)
{
	int[][] Data = null;
	try 
	{
		if(json.has(str))
		{
			JSONArray Array1 = json.getJSONArray(str);			//获取属性名对应的二维数组
			
			Data = new int[Array1.length()][];
			for(int i = 0; i < Array1.length(); i ++)
			{
				JSONArray Array2 = Array1.getJSONArray(i);		//获取一维数组
				
				Data[i] = new int[Array2.length()];
				for(int j = 0; j < Array2.length(); j ++)
					Data[i][j] = Array2.getInt(j);				//获取一维数组中的数据
			}
		}
	} 
	catch (JSONException e) 
	{
		e.printStackTrace();
	}
	return Data;
}
//从json中, 读取属性名为str的数据, 到二维数组Data中
public double[][] readTwoDimensionData(JSONObject json, String str)
{
	double[][] Data = null;
	try 
	{
		if(json.has(str))
		{
			JSONArray Array1 = json.getJSONArray(str);			//获取属性名对应的二维数组
			
			Data = new double[Array1.length()][];
			for(int i = 0; i < Array1.length(); i ++)
			{
				JSONArray Array2 = Array1.getJSONArray(i);		//获取一维数组
				
				Data[i] = new double[Array2.length()];
				for(int j = 0; j < Array2.length(); j ++)
					Data[i][j] = Array2.getDouble(j);			//获取一维数组中的数据
			}
		}
	} 
	catch (JSONException e) 
	{
		e.printStackTrace();
	}
	return Data;
}

你可能感兴趣的:(java)