public class JsonTool {
public static void createJson() {
JSONObject json = new JSONObject();
JSONArray device = new JSONArray();
for (int i = 0; i < DeviceStateManager.getInstance()
.getAllDeviceState().size(); i++) {
JSONObject subJson = new JSONObject();
try {
subJson.put("ID", DeviceStateManager.getInstance()
.getAllDeviceState().get(i).getmDeviceId());
subJson.put("DeviceType", DeviceStateManager.getInstance()
.getAllDeviceState().get(i).getmDeviceType());
subJson.put("State", DeviceStateManager.getInstance()
.getAllDeviceState().get(i).getmDeviceState());
subJson.put("DeviceName", DeviceStateManager.getInstance()
.getAllDeviceState().get(i).getmDeviceName());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
device.put(subJson);
}
try {
json.put("Devices", device);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("TCP服务", "json----->" + json);
}
public static void write(File file,CopyOnWriteArrayList<DeviceState> messages) {
JsonWriter writer = null;
try {
writer = new JsonWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
writer.setIndent(" ");
writeMessageArray(writer, messages);
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void writeMessageArray(JsonWriter writer,CopyOnWriteArrayList<DeviceState> messages) throws IOException {
writer.beginArray();
for (DeviceState message : messages) {
writeMessage(writer, message);
}
writer.endArray();
}
private static void writeMessage(JsonWriter writer,DeviceState message) throws IOException {
writer.beginObject();
writer.name("ID").value(message.getmDeviceId());
writer.name("DeviceType").value(message.getmDeviceType());
writer.name("State").value(message.getmDeviceState());
writer.name("DeviceName").value(message.getmDeviceName());
writer.endObject();
}
public static List read(File file) throws Exception {
JsonReader reader = new JsonReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
try {
return readMessageArray(reader);
} finally{
reader.close();
}
}
private static List readMessageArray(JsonReader reader) throws IOException {
List messages = new CopyOnWriteArrayList<DeviceState>();
reader.beginArray();
while (reader.hasNext()) {
messages.add(readMessage(reader));
}
reader.endArray();
return messages;
}
private static DeviceState readMessage(JsonReader reader) throws IOException {
String ID = null;
String DeviceTpye = null;
String State = null;
String DeviceName = null;
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("ID")) {
ID = reader.nextString();
}else if (name.equals("DeviceType")) {
DeviceTpye = reader.nextString();
}else if (name.equals("State")) {
State = reader.nextString();
}else if (name.equals("DeviceName")) {
DeviceName = reader.nextString();
}else {
reader.skipValue();
}
}
reader.endObject();
DeviceState mDeviceState = new DeviceState();
mDeviceState.setmDeviceId(ID);
mDeviceState.setmDeviceName(DeviceName);
mDeviceState.setmDeviceState(State);
mDeviceState.setmDeviceType(DeviceTpye);
try {
return mDeviceState;
} finally {
mDeviceState = null;
}
}
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
public class JsonWriteUtil {
/**
* 将文件中的数据读取为string
* @return
*/
private String getJSONFileContent(File mFile) {
String fileContent = "";
FileInputStream fins = null;
ByteArrayOutputStream bos = null;
byte [] buf = new byte[1024];
int len = -1;
try {
fins = new FileInputStream(mFile);
bos = new ByteArrayOutputStream();
while ((len = fins.read(buf)) != -1) {
bos.write(buf,0,len);
}
bos.close();
fins.close();
fileContent = bos.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return fileContent;
}
/**
* 创建json文件时,写入json数据
*/
private void writeFile(File file,String sets) {
FileWriter fw = null;
try {
fw = new FileWriter(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(fw);
pw.write(sets);
pw.close();
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 删除一条json数据
*/
public boolean deleteJsonData(String key,File file) {
boolean result = false;
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(getJSONFileContent(file));
jsonObject.remove(key);
result = true;
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
/**
* 写入文件的方法
*/
public boolean write2JsonFile(String key,String value,File file) {
boolean result = false;
try {
if (file.exists()) {
JSONObject jsonObject = new JSONObject(this.getJSONFileContent(file));
jsonObject.put(key, value);
writeFile(file, jsonObject.toString());
result = true;
}else {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
writeFile(file, jsonObject.toString());
result = true;
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}