jackson流式解析

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;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值