第一种:
string filters = HttpContext.Current.Request["filters"].ToString();
if (!string.IsNullOrEmpty(filters))
{
TextReader tr = new StringReader(filters);
JsonTextReader reader = new JsonTextReader(tr);
while (reader.Read())
{
if (reader.Depth == 1 && reader.TokenType == JsonToken.String)
groupOp = " " + (string)reader.Value + " ";
if (reader.Depth == 3 && reader.TokenType == JsonToken.String && reader.Path.Substring(9) == "field")
searchField = (string)reader.Value;
if (reader.Depth == 3 && reader.TokenType == JsonToken.String && reader.Path.Substring(9) == "op")
searchOper = (string)reader.Value;
if (reader.Depth == 3 && reader.TokenType == JsonToken.String && reader.Path.Substring(9) == "data")
searchString = (string)reader.Value;
if (reader.Depth == 2 && reader.TokenType == JsonToken.EndObject)
searchWhere(searchField, searchOper, searchString);
}
}
第二种:
string filters = HttpContext.Current.Request["filters"].ToString();
//{"groupOp":"AND","rules":[{"field":"IMEI","op":"cn","data":"6"},{"field":"createtime","op":"ge","data":"2012-07-05"}]}
if (!string.IsNullOrEmpty(filters))
{
JObject o=(JObject)JsonConvert.DeserializeObject(filters);
groupOp= " "+o["groupOp"].ToString()+" ";//留空格用来拼sql
while (o["rules"].HasValues)
{
searchWhere(o["rules"].First["field"].ToString(), o["rules"].First["op"].ToString(), o["rules"].First["data"].ToString());
o["rules"].First.Remove();
}
}
searchWhere方法:
public void searchWhere(string searchField,string searchOper,string searchString)
{
if (searchString != "")
{
switch (searchOper)
{
case "eq": sql_for_where += groupOp + searchField + "='" + searchString + "'";
break;
case "ne": sql_for_where += groupOp + searchField + "!='" + searchString + "'";
break;
case "le": sql_for_where += groupOp + searchField + "<=to_date('" + searchString + "','yyyy-mm-dd')";
break;
case "ge": sql_for_where += groupOp + searchField + ">=to_date('" + searchString + "','yyyy-mm-dd')";
break;
case "cn": sql_for_where += groupOp + searchField + " like '%" + searchString + "%'";
break;
case "bw": sql_for_where += groupOp + searchField + " like '" + searchString + "%'";
break;
}
}
}
展示一下: