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()就可以直接将对象进行序列化操作。
更新于:2个月前相关文章
- 【说站】java代码块的执行顺序是什么
- 【说站】php上传文件代码
- 【说站】python indent如何打印JSON数据
- 【说站】python如何追写内容
- 【说站】python提取字符串指定内容
- 设计模式之高质量代码
- 【说站】java求圆的面积代码
- 【说站】JSON字符串如何转换成Python?
- 【说站】python json文件格式转换
- 【说站】Python代码中编译是什么
- 【说站】php数组转json字符串
- 【说站】python json保存数据的方法
- 【说站】java语言代码大全
- .NET Core Razor page/MVC 返回json忽略空属性
- 【说站】python代码提速有哪些方法
- 【说站】Python字典和json的比较
- 【说站】php解析json数据
- 【说站】php返回json数据
- iOS 图片压缩方法的示例代码
- php语法技巧代码实例