C#如何识别一个字符串是否Json格式

C#如何识别一个字符串是否Json格式,第1张

如果你的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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9327031.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存