import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
public class JSONDataUtils {
public static void edit(String f_json,String field,String fvalue,Map<String,Object> editData)
{
String jsonList = "";
try {
jsonList = org.apache.commons.io.FileUtils.readFileToString(new File(f_json),"utf-8");
JSONObject data = JSON.parseObject(jsonList);
JSONArray ja = data.getJSONArray("rows");
int len = ja.size();
for(int i = 0;i<len;i++)
{
JSONObject jo = ja.getJSONObject(i);
if(jo.getString(field).equals(fvalue))
{
System.out.println("修改前\t"+jo.toJSONString());
for(String key:editData.keySet())
{
jo.put(key, editData.get(key));
}
ja.set(i, jo);
System.out.println("修改后\t"+editData);
System.out.println("修改后\t"+jo.toJSONString());
System.out.println("修改后\t"+ja.getJSONObject(i).toJSONString());
}
}
data.put("rows", ja);
FileUtils.writeStringToFile(new File(f_json), jsonFormatter(data.toJSONString()),"utf-8");
} catch (IOException e) {
System.out.println(jsonFormatter(jsonList));
e.printStackTrace();
}
}
public static void add(String f_json,Map<String,String> addData)
{
String jsonList = "";
try {
jsonList = org.apache.commons.io.FileUtils.readFileToString(new File(f_json),"utf-8");
JSONObject data = JSON.parseObject(jsonList);
JSONArray ja = data.getJSONArray("rows");
ja.add(0,addData);
data.put("rows", ja);
data.put("total", data.getInteger("total")+1);
FileUtils.writeStringToFile(new File(f_json), jsonFormatter(data.toJSONString()),"utf-8");
} catch (IOException e) {
System.out.println(jsonFormatter(jsonList));
e.printStackTrace();
}
}
public static void del(String f_json,String field,String fvalue)
{
String jsonList = "";
try {
jsonList = org.apache.commons.io.FileUtils.readFileToString(new File(f_json),"utf-8");
JSONObject data = JSON.parseObject(jsonList);
JSONArray ja = data.getJSONArray("rows");
int len = ja.size();
for(int i = 0;i<len;i++)
{
JSONObject jo = ja.getJSONObject(i);
if(jo.getString(field).equals(fvalue))
{
ja.remove(jo);
len -=1;
}
}
//System.out.println(ja.toJSONString());
data.put("rows", ja);
data.put("total", data.getInteger("total")-1);
//System.out.println(data.toJSONString());
FileUtils.writeStringToFile(new File(f_json), jsonFormatter(data.toJSONString()),"utf-8");
} catch (IOException e) {
System.out.println(jsonFormatter(jsonList));
e.printStackTrace();
}
}
public static void batDel(String f_json,String field,String fvalues)
{
String jsonList = "";
try {
jsonList = org.apache.commons.io.FileUtils.readFileToString(new File(f_json),"utf-8");
JSONObject data = JSON.parseObject(jsonList);
JSONArray ja = data.getJSONArray("rows");
int len = ja.size();
String[] fv = fvalues.split(",");
System.out.println(fvalues);
for(int i = 0;i<len;i++)
{
JSONObject jo = ja.getJSONObject(i);
for(String fvalue:fv)
{
if(StringUtils.isBlank(fvalue)
||StringUtils.isEmpty(fvalue))
{
continue;
}
if(jo.getString(field).equals(fvalue))
{
ja.remove(jo);
len -= 1;
System.out.println("删除一条");
}
}
}
//System.out.println(ja.toJSONString());
data.put("rows", ja);
data.put("total", data.getInteger("total")-fv.length);
//System.out.println(data.toJSONString());
FileUtils.writeStringToFile(new File(f_json), jsonFormatter(data.toJSONString()),"utf-8");
} catch (IOException e) {
System.out.println(jsonFormatter(jsonList));
e.printStackTrace();
}
}
@SuppressWarnings({ "unchecked", "static-access" })
public static Map<String,String> find(String f_json,String field,String fvalue)
{
String jsonList = "";
try {
jsonList = org.apache.commons.io.FileUtils.readFileToString(new File(f_json),"utf-8");
JSONObject data = JSON.parseObject(jsonList);
JSONArray ja = data.getJSONArray("rows");
int len = ja.size();
for(int i = 0;i<len;i++)
{
JSONObject jo = ja.getJSONObject(i);
if(jo.getString(field).equals(fvalue))
{
return jo.parseObject(jo.toJSONString(), HashMap.class);
}
}
} catch (IOException e) {
System.out.println(jsonFormatter(jsonList));
e.printStackTrace();
}
return new HashMap<String, String>();
}
public static Integer findInteger(String f_json,String field,String fvalue,String ffield)
{
String jsonList = "";
try {
jsonList = org.apache.commons.io.FileUtils.readFileToString(new File(f_json),"utf-8");
JSONObject data = JSON.parseObject(jsonList);
JSONArray ja = data.getJSONArray("rows");
int len = ja.size();
for(int i = 0;i<len;i++)
{
JSONObject jo = ja.getJSONObject(i);
if(jo.getString(field).equals(fvalue))
{
return jo.getInteger(ffield);
}
}
} catch (IOException e) {
System.out.println(jsonFormatter(jsonList));
e.printStackTrace();
}
return 0;
}
public static String findStr(String f_json,String field,String fvalue,String ffield)
{
String jsonList = "";
try {
jsonList = org.apache.commons.io.FileUtils.readFileToString(new File(f_json),"utf-8");
JSONObject data = JSON.parseObject(jsonList);
JSONArray ja = data.getJSONArray("rows");
int len = ja.size();
for(int i = 0;i<len;i++)
{
JSONObject jo = ja.getJSONObject(i);
if(jo.getString(field).equals(fvalue))
{
return jo.getString(ffield);
}
}
} catch (IOException e) {
System.out.println(jsonFormatter(jsonList));
e.printStackTrace();
}
return "";
}
/**
*
* @author 王乾
* @comments 格式化至可视模式
* @time 2015-11-4上午11:25:19
* @param uglyJSONString
* @return
* @returnType String
* @modification
*/
public static String jsonFormatter(String uglyJSONString){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(uglyJSONString);
String prettyJsonString = gson.toJson(je);
return prettyJsonString;
}
public static void main(String[] args) {
String f_json = "D:\\workspaces\\demo\\WebRoot\\data\\bgs\\txl.json";
// Map<String,Object> editData = new HashMap<String, Object>();
// editData.put("txlstatu", "同意修改");
// JSONDataUtils.edit(f_json, "id", "txl-00001",editData);
// editData.put("id", "txl-00011");
// JSONDataUtils.add(f_json, editData);
// editData.put("id", "txl-00012");
// JSONDataUtils.add(f_json, editData);
// JSONDataUtils.del(f_json, "id", "txl-00012");
// JSONDataUtils.batDel(f_json, "id", "txl-00011,txl-00012");
System.out.println(JSONDataUtils.find(f_json, "id", "txl-00006"));
}
}