如果你的json 不算复杂的话,可以直接用一个简单的正则
string pattern=@"{("\w+":(\d+|"\w+"|true|false|null))+}\] "; // input 是json字符串 var match = RegexMatch(input, pattern);
如果复杂的,你需要 判断 ":"等!
也可以用这个:
var serializer = new JavaScriptSerializer();dynamic obj = serializerDeserialize(json, typeof(object));
//判断 obj就行!
/// <summary>
/// JSON格式数组转化为对应的List<T>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JsonStr">JSON格式数组</param>
/// <returns></returns>
public static List<T> JSONStringToList<T>(string JsonStr)
{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
//设置转化JSON格式时字段长度
List<T> objs = SerializerDeserialize<List<T>>(JsonStr);
return objs;
}
//调用方法
List<DBTD_SHARE> TD_Share = new List<DBTD_SHARE>();
TD_Share = JSONStringToList<DBTD_SHARE>(JsonStr);
你构造一个类 里面有carLengthMin等3个成员
我这里是DBTD_SHARE
public void fillTreeNode(TreeView treeView,string json) {
JObject jo = (JObject)JsonConvertDeserializeObject<dynamic>(json);
treeViewNodesAddRange(addJobjectToTree(jo));
treeViewExpandAll();
}
public TreeNode[] addJobjectToTree(JObject jobj) {
List<TreeNode> trees = new List<TreeNode>();
foreach (var item in jobj) {
if (itemValueGetType() == typeof(JObject)) {
treesAdd(new TreeNode(itemKeyToString(), addJobjectToTree((JObject)itemValue)));
}
else if (itemValueGetType() == typeof(JArray)) {
treesAdd(new TreeNode(itemKeyToString(), addJArrayToTree((JArray)itemValue)));
}
else {
treesAdd(new TreeNode(itemKeyToString(), new TreeNode[]{new TreeNode(itemValueToString())}));
}
}
return treesToArray();
}
public TreeNode[] addJArrayToTree(JArray jarr) {
List<TreeNode> trees = new List<TreeNode>();
int index = 0;
foreach (var item in jarr) {
if (itemGetType() == typeof(JObject)) {
treesAdd(new TreeNode(indexToString(), addJobjectToTree((JObject)item)));
}
else if (itemGetType() == typeof(JArray)) {
treesAdd(new TreeNode(indexToString(), addJArrayToTree((JArray)item)));
}
index++;
}
return treesToArray();
}
调用fillTreeNode(),然后传TrewView对象,和JSON的字符串进去就行了,交叉着递归调用,分叉太多可能会炸……处理API返回的JSON差不多了。
对了,还要加个using。
using NewtonsoftJson;using NewtonsoftJsonLinq;
#IT教育# #IT# #程序员#
NewtonJson是专业处理Json数据的开源库,用于C#NET开发。NewtonJson在5年前就用过,这些年随着VS的升级,NewtonJson也进行了升级,不同的VS NET版本使用不事的NewtonJson库。Json数据在通信环境里经常使用,最近开发一个CS项目就使用到了Json,所以再用到了NewtonJson。
NewtonJson开源主要是理解NewtonJson的例子代码,当然codeproject和其它平台也会有NewtonJson的示例代码,这些代码都是NewtonJson特点的理解,值得学习。
在NewtonsoftJsonTests目录下重要的有:Benchmarks性能测试、Converters转换、Issues细节问题、JsonTextReaderTests Reader封装、Linq、Schema方案和Serialization序列化,这些例子吃透就能掌握NewtonJson的特点,NewtonJson是高效安全新潮的Json处理库,大家可以放心使用。
NewtonJson开发需要导入NewtoJson,用nuget可以导入,低版本的VS可以下载文件,找到dll,加到项目引用里使用。我用的下载文件名是json130r1,里面并没有NewtonJson名称,比较奇怪。
NewtonJson的使用要充分理解泛型特点,泛型结合类和集合使用很方便,比如:。
DeserializeObject是函数,函数带有和类名,就是泛型的标志,泛型机制使处理数据更方便。NewtonJson的泛型底层用到了Type类型反射机制,泛型类型通过了typeof进行了转换保存,底层使用Type机制处理类的属性。
NewtonJson除了支持泛型,还支持LINQ,LINQ的主要类是JObject、JArray和JValue,NewtonJson里实现了这几类,底层代码非常复杂,正因为有了这些复杂的底层代码,我们可以方便地使用类似下面的代码:
上面代码没有定义类和属性成员,用了dynamic直接代表了类型,但是类型的属性还可以用来访问到,这非常强大方便。
1你自己多看看API
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public ActionResult BindDataTable()
{
var dt = new DataTable();
dtColumnsAdd("Id");
dtColumnsAdd("Name");
for (int i = 0; i < 20; i++)
{
var dr = dtNewRow();
dr["Id"] = i;
dr["Name"] = "楼主" + i;
dtRowsAdd(dr);
}
var json = DataTableToJson(dt);
JavaScriptSerializer ser = new JavaScriptSerializer();
var list = serDeserialize<dynamic>(json);
return Json(list, JsonRequestBehaviorAllowGet);
}
[NonAction]
public string DataTableToJson(DataTable dt)
{
StringBuilder Json = new StringBuilder();
JsonAppend("[");
if (dtRowsCount > 0)
{
for (int i = 0; i < dtRowsCount; i++)
{
JsonAppend("{");
for (int j = 0; j < dtColumnsCount; j++)
{
JsonAppend("\"" + dtColumns[j]ColumnNameToString() + "\":\"" + dtRows[i][j]ToString() + "\"");
if (j < dtColumnsCount - 1)
{
JsonAppend(",");
}
}
JsonAppend("}");
if (i < dtRowsCount - 1)
{
JsonAppend(",");
}
}
}
JsonAppend("]");
return JsonToString();
}
}
View
<script>
$(document)ready(function () {
$("#grid")kendoGrid({
dataSource: {
dataType: "json",
transport: {
read: "@UrlAction("BindDataTable")"
},
pageSize: 5
},
height: 270,
sortable: true,
pageable: true,
columns: [{
field: "Id",
width: 50
},
{
field: "Name",
title: "Name",
width: 400
}
]
});
});
</script>
<div>
<div id="grid"></div>
</div>
以上就是关于C#如何识别一个字符串是否Json格式全部的内容,包括:C#如何识别一个字符串是否Json格式、c# 将 json 数据转换成 List<T> 怎么转换,json 数据格式如下图:、怎么用本地json文件构建treeview等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)