public class ParseJson
{
public static List<String> toJson(String data) throws JsonProcessingException, IOException
{
ObjectMapper jsonReader = new ObjectMapper();
JsonNode json = jsonReader.readTree(data);
Iterator<String> mainFieldNames = json.getFieldNames(); //main field names
Iterator<JsonNode> mainFieldValues = json.getElements(); //main field values
List<String> conditions = new ArrayList<String>();
while (mainFieldNames.hasNext() && mainFieldValues.hasNext())
{
String mainFieldName = mainFieldNames.next(); //get one main field name
JsonNode mainFieldValue = mainFieldValues.next(); //get one main field value
json = jsonReader.readTree(mainFieldValue.toString());
Iterator<String> subFieldNames = json.getFieldNames(); //sub field names
//parse value
Iterator<JsonNode> subFieldValues = json.getElements(); //sub field values
String begin = null;
String end = null;
while (subFieldNames.hasNext() && subFieldValues.hasNext())
{
String subFieldName = subFieldNames.next(); //get one main field name
JsonNode subFieldValue = subFieldValues.next(); //get one main field value
if (subFieldName == "begin")
{
begin = subFieldValue.toString();
}
else if (subFieldName == "end")
{
end = subFieldValue.toString();
}
}
String condition;
if (begin == null && end == null)
{
condition = mainFieldName + " = " + mainFieldValue.toString();
}
else if (begin == null && end != null)
{
condition = mainFieldName + " <= " + end;
}
else if (begin != null && end == null)
{
condition = mainFieldName + " >= " + begin;
}
else
{
condition = mainFieldName + " BETWEEN " + begin + " AND " + end;
}
conditions.add(condition);
}
for (int i = 0; i < conditions.size(); i++)
{
System.out.println(conditions.get(i));
}
return conditions;
}
}