vscode中自动将json格式的内容自动生成对应的代码
JSON是各种编程语言中都很常用的数据格式,如Java,JavaScript,C#等语言中都常用JSON传输数据或保存一些配置信息,要序列化或反序列化字符串,在代码中需要有对应与JSON内容的类才方便实现。vscode是非常强大的插件化编辑(甚至可以称之为开发环境了),在vscode中,通过两个插件可以非常方便的根据写好的JSON数据内容,自动生成对应的序列化的类。
安装插件
在vscode Extensions管理中搜索“JSON”关键字,先安装JSON支持插件“JSON”,如下图:
然后,安装“Paste JSON as Code”插件,如下图:
该插件支持由JSON生成TypeScript, Python, Go, Ruby, C#, Java, Swift, Rust, Kotlin, C++, Flow, Objective-C, JavaScript, Elm 和 JSON Schema语言的代码。
JSON生成C#的代码
这里以转换为C#的代码为例,假设JSON的文本内容如下:
{
user: Jame,
ege : 19
}
拷贝JSON内容到剪贴板,然后使用“F1”快捷键,搜索“Paste JSON as Code”,如下图:
直接单击“Paste JSON as Code”,此时,会提示代码文件的文件名,此处输入test.cs,然后回车,插件就会自动将剪贴板中的JSON转换为序列化/反序列化的C#代码,转换后的代码如下:
// Generated by https://quicktype.io
namespace QuickType
{
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public partial class TestCs
{
[JsonProperty(user)]
public string User { get; set; }
[JsonProperty(ege)]
[JsonConverter(typeof(ParseStringConverter))]
public long Ege { get; set; }
}
public partial class TestCs
{
public static TestCs FromJson(string json) = JsonConvert.DeserializeObjectTestCs(json, QuickType.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this TestCs self) = JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
}
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters = {
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
},
};
}
internal class ParseStringConverter : JsonConverter
{
public override bool CanConvert(Type t) = t == typeof(long) || t == typeof(long?);
public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null) return null;
var value = serializer.Deserializestring(reader);
long l;
if (Int64.TryParse(value, out l))
{
return l;
}
throw new Exception(Cannot unmarshal type long);
}
public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
{
if (untypedValue == null)
{
serializer.Serialize(writer, null);
return;
}
var value = (long)untypedValue;
serializer.Serialize(writer, value.ToString());
return;
}
public static readonly ParseStringConverter Singleton = new ParseStringConverter();
}
}
以上代码,自动使用了NewtonJSON库进行序列化和反序列化操作,在实际工程中需要引入NewtonJson才能正常使用。生成的代码也是一个很简洁并高效的代码模板,自动生成了静态方法,直接使用对象名.Serialize()就可以直接将对象进行序列化操作。
更新于:9天前相关文章
- 春节代码 新年快乐html 灯笼js
- 圣诞树代码 下雪
- 表白代码,爱心树html
- TP6.0 模型JSON字段的使用 【系统配置表 key-value】
- git pull 从远程获取代码并合并本地的版本
- Linux中date命令如何格式化输出需要的时间格式
- 使用C#的Socket实现最简单的TCP通信示例代码
- 代码写得好 在哪里都能蹦迪
- C#检测网络端口是否被占用的参考代码
- vscode打开代码中文显示乱码的问题
- HTML-CSS-JS Prettify 代码格式化插件
- 原生js格式化json
- Pretty Json 插件 - JSON格式化
- json5新特性
- C#使用ToString方法数组类型格式化为字符串
- json python中的转储函数
- 有没有一个在线工具可以将Python代码转换为Java代码?
- 为什么C代码比Python代码运行得更快?
- 你如何在 Python 中编写自动售货机代码?
- 用于从 JSON 响应中提取单个值的 Python 程序