最近的项目中需要和一个服务端程序通讯,而通讯的协议是基于流行的json,由于是.net,所以很简单的从公司代码库里找到了Newtonsoft.dll(json.NET),但是悲剧的是这个dll居然是很老的版本,没有Newtonsoft.Json.Linq、没有JObject,也就是说,如果想使用json必须json字符序列化为.net对象才行,这时问题来了,json格式无比的复杂,如果我一个一个对着json去定义class代码,实在是显得有点蠢了,所以百度了一下,还真找到了一个工具http://json2csharp.chahuo.com/,但是这个工具对我来说有一点点不爽,我的json中属性的值,我希望将它生成为.net中属性的注释如:如
{ name:"用户名",password:"密码" }
生成
public class Root { /// <summary> /// 用户名 /// <summary> public string name { get; set; } /// <summary> /// 密码 ///</summary> public string password { get; set; } }
而该工具貌似不可以,于是使用js写了简单的小工具,(测试数据json来自于:https://www.juhe.cn/docs/api/id/39(不是广告,我随便找的))如下:
如下:
<iframe style="margin: 0px; padding: 0px; color: #393939; font-family: 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, sans-serif; width: 756.859px; height: 800px;" src="http://sandbox.runjs.cn/show/nhuozgst"></iframe>
代码
<html> <head> <title>json生成c#类</title> <link rel="stylesheet" href="http://js.chahuo.com/prettify/prettify.css"> <script language="javascript" type="text/javascript" src="http://js.chahuo.com/prettify/prettify.js"></script> <script type="text/javascript" src="http://tool.oschina.net/js/jsbeautify.js"></script> </head> <body> <h1>json生成C#类小工具</h1> <h5>JSON 字符串</h5> <div> <textarea style="width:600px;height:300px;margin-bottom:5px;" id="jsonStr"></textarea> <br> <button onclick="document.getElementById('jsonStr').value='';document.getElementById('class').innerHTML=''">清除</button> <button onclick="do_js_beautify()">格式化代码</button> <button onclick="startGen()">生成C#类</button> </div> <h5>C#类代码 <button onclick="selectCode()">选中代码</button></h5> <pre class="prettyprint" id="class" style="border:1px solid #ccc; padding:10px; width:800px;"> </pre> <script> String.prototype.format = function(){ var args = arguments; return this.replace(/\{(\d+)\}/g, function(m,i){ return args[i]; }); } String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g,""); } JSON2CSharp={ _allClass:[], _genClassCode:function(obj,name){ var clas="public class {0}\r\n{\r\n".format(name || "Root"); for(var n in obj){ var v = obj[n]; n = n.trim(); clas += " {0} public {1} {2} { get; set; }\r\n\r\n".format(this._genComment(v),this._genTypeByProp(n,v),n); } clas += "}\r\n\r\n"; this._allClass.push(clas); return this._allClass.join("\r\n\r\n"); }, _genTypeByProp:function(name,val){ switch(Object.prototype.toString.apply(val)){ case "[object Number]" :{ return val.toString().indexOf(".") > -1 ? "double" : "int"; } case "[object Date]":{ return "DateTime"; } case "[object Object]":{ name = name.substring(0,1).toUpperCase() + name.substring(1); this._genClassCode(val,name); return name; } case "[object Array]":{ return "List<{0}>".format(this._genTypeByProp(name+"Item",val[0])); } default:{ return "string"; } } }, _genComment:function(val){ var commm= typeof(val) == "string" && /.*[\u4e00-\u9fa5]+.*$/.test(val) ? val : "" ; return "/// <summary>\r\n /// "+commm+ "\r\n /// </summary>\r\n"; }, convert:function(jsonObj){ this._allClass=[]; return this._genClassCode(jsonObj); } } function do_js_beautify() { var js_source =document.getElementById("jsonStr").value.replace(/^\s+/, ''); if(js_source.length==0) return; tabchar = ' '; var fjs = js_beautify(js_source); document.getElementById("jsonStr").value=fjs; } function startGen(){ try{ var v = eval("("+document.getElementById("jsonStr").value+")"); document.getElementById("class").className ="prettyprint"; document.getElementById("class").innerHTML=JSON2CSharp.convert(v); prettyPrint(); document.getElementById("jsonStr").focus(); }catch(e){ alert(e.message); } } function selectCode() { if (document.selection) { var range = document.body.createTextRange(); range.moveToElementText(document.getElementById('class')); range.select(); } else if (window.getSelection) { var range = document.createRange(); range.selectNode(document.getElementById('class')); window.getSelection().addRange(range); } } </script> </body> </html>
原理非常简单,遍历json对象的属性,根据属性值的类型生成对应的类名即可, 这里不做详细介绍了。 代码写的有点丑,希望大家用得着。
相关推荐
这个工具的使用方法通常是这样的:开发者在界面上输入或复制一段JSON文本,然后点击“生成”按钮,工具会解析JSON并创建相应的C#代码。生成的代码可以直接复制到项目中,用于将JSON数据映射到对象实例,或者将对象...
为了解决这个问题,出现了"解析Json生成C#类文件描述的工具",它能够自动生成C#类,以便于直接映射和操作JSON数据。 这个工具的核心功能是读取JSON文件,并根据其结构生成对应的C#类定义。JSON文件由键值对组成,...
3. **生成C#代码**:程序将分析JSON结构,并自动生成相应的C#类定义。这些类会具有相应的属性,对应JSON对象中的键值对。如果JSON包含嵌套的对象或数组,工具也会生成嵌套的类或集合。 4. **保存和使用生成的代码**...
本项目名为"JSON和C#类代码互相转换工具",其主要目标是提供一个便捷的方法,实现JSON字符串与C#类对象之间的相互转换。下面将详细解释这一转换过程以及相关技术。 首先,JSON格式的数据通常以键值对的形式存储,...
在IT行业中,数据转换是常见...总之,"excel转json插件,并生成C#类"是一个实用的工具,它可以大大提高数据处理的效率,尤其在处理大量结构化数据时。了解其工作原理和使用方法,将有助于你在项目中更有效地管理数据。
开发者无需手动编写对应的C#模型代码,只需提供JSON字符串或文件,工具就能自动生成相应的C#实体类。这在处理复杂的JSON结构时尤其有用,减少了错误的可能性,并且节省了大量时间。 要理解这个工具的工作原理,我们...
3. 生成C#实体类:根据解析的结果,工具会自动生成C#源代码,创建一个或多个类,每个类代表一个JSON对象,类中的属性对应JSON的键。 4. 输出实体类文件:生成的C#源代码会被保存为`.cs`文件,可以方便地在C#项目中...
2. **元数据驱动**:许多代码生成工具支持从数据库模式、XML文件或JSON配置中提取元数据,然后基于这些元数据自动生成相应的C#代码。这种方式在处理与数据库交互的代码时尤其有用,如Entity Framework的DbContext和...
标题中的“dotnet-一个用于解析swaggerjson生成符合WebApiClient接口代码的代码生成工具”指出,这是一个基于.NET框架的工具,其主要功能是解析Swagger JSON格式的文档,自动生成符合WebApiClient规范的接口代码。...
LitJson是C#编程语言中一个轻量...总结来说,LitJson是一个简单易用的C# Json解析工具,适用于对性能要求较高或对功能需求不那么复杂的情况。在开发过程中,理解并熟练掌握它的使用,能够帮助你更有效地处理Json数据。
2. 生成类定义:根据解析的结果,工具会为每个JSON对象生成一个C#类,每个键对应类的一个属性,数组则转换为C#的List或其他集合类型。 3. 类命名与类型映射:工具会根据JSON键生成属性名,并根据JSON值的类型选择...
1. 在Java中,可以使用在线工具如`jsonschema2pojo`或者IDE插件如`JsonToJava`,输入JSON字符串,自动生成对应的Java类。 2. 对于C#开发者,有`QuickType`在线工具,可以将JSON转换为C#类。 3. 如果你使用的是IDEA,...
标签“Json生成实体类”和“生成实体对象”强调了这个工具的主要功能。使用此工具,开发者可以快速地从JSON数据构建出模型层,这对于那些经常处理API请求、Web服务响应或者JSON配置文件的项目来说尤其有用。 在提供...
总之,"C#,Java生成实体类工具源码"是一个宝贵的资源,它提供了深入了解数据库与代码生成之间交互的机会。通过研究和实践,开发者不仅可以提高开发效率,还能增强对数据库驱动应用程序设计的理解。对于初学者来说,...
**ProtoGen生成C#文件工具** protobuf,全称为Protocol Buffers,是Google开发的一种高效、跨平台的数据序列化协议。它允许开发者定义数据结构,并将其转换为二进制格式进行存储或网络传输,以实现高效的通信。与...
"Json转C#实体工具"是一个实用工具,它可以帮助开发者快速地根据JSON结构自动生成相应的C#类,极大地提高了开发效率。这个工具的工作原理通常是解析JSON字符串或JSON文件,分析其结构,然后根据结构生成对应的C#类...
为了简化这个过程,开发者可以使用JSON生成类来自动化这个任务,避免手动创建对应的C#类。 在.NET Framework和.NET Core中,微软提供了Json.NET库(Newtonsoft.Json),这是一个非常流行的第三方库,用于处理JSON...
本文将深入探讨如何将JSON字符串转换为C#代码中的实体类。 在Web开发中,JSON常用来表示API响应或请求的数据。为了将接收到的JSON数据有效地整合到C#程序中,我们需要将其转换为C#对象。这个过程称为反序列化。C#...
2. JsonCSharpClassGenerator.exe:这个名字表明这是一个专门用于生成C#类的工具,可能仅针对C#开发者,用于将JSON转换为C#类代码。 使用这类工具,开发者可以避免手动编写大量的getter、setter方法和其他基础代码...