package com.opensoc.parsing.parsers;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
/**
* @author kiran
*
*/
public class JSONCleaner implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param jsonString
* @return
* @throws ParseException
* Takes a json String as input and removes any Special Chars (^ a-z A-Z 0-9) in the keys
*/
@SuppressWarnings({"unchecked","rawtypes"})
public JSONObject Clean(String jsonString) throws ParseException
{
JSONParser parser = new JSONParser();
Map json = (Map) parser.parse(jsonString);
JSONObject output = new JSONObject();
Iterator iter = json.entrySet().iterator();
while(iter.hasNext()){
Map.Entry entry = (Map.Entry)iter.next();
String key = ((String)entry.getKey()).replaceAll("[^\\._a-zA-Z0-9]+","");
output.put(key, entry.getValue());
}
return output;
}
@SuppressWarnings({ "unchecked", "rawtypes", "unused" })
public static void main(String args[])
{
String jsonText = "{\"first_1\": 123, \"second\": [4, 5, 6], \"third\": 789}";
JSONCleaner cleaner = new JSONCleaner();
try {
//cleaner.Clean(jsonText);
Map obj=new HashMap();
obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true));
obj.put("nickname",null);
Map obj1 = new HashMap();
obj1.put("sourcefile", obj);
JSONObject json = new JSONObject(obj1);
System.out.println(json);
System.out.print(jsonText);
} catch (Exception e) {
e.printStackTrace();
}
}
}