Panagiotis 评论了非常有用的“将 json 粘贴为类”功能,但我通常更喜欢使用 http://QuickType.io 之类的东西,因为它会生成更多功能完整/有用/符合名称的类集:
// <auto-generated />
//
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
// using Leia;
//
// var data = Data.FromJson(jsonString);
namespace Leia
{
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public partial class Data
{
[JsonProperty("name")]
public Name Name { get; set; }
[JsonProperty("age")]
public Age Age { get; set; }
[JsonProperty("boo")]
public Boo Boo { get; set; }
}
public partial class Age
{
[JsonProperty("real")]
[JsonConverter(typeof(ParseStringConverter))]
public long Real { get; set; }
[JsonProperty("dogyears")]
[JsonConverter(typeof(ParseStringConverter))]
public long Dogyears { get; set; }
}
public partial class Boo
{
[JsonProperty("foo")]
public string[] Foo { get; set; }
}
public partial class Name
{
[JsonProperty("firstname")]
public string Firstname { get; set; }
[JsonProperty("lastname")]
public string Lastname { get; set; }
}
public partial class Data
{
public static Data FromJson(string json) => JsonConvert.DeserializeObject<Data>(json, Agarwal.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this Data self) => JsonConvert.SerializeObject(self, Agarwal.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.Deserialize<string>(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();
}
}
转到http://quicktype.io 并粘贴您的 json,设置您的选项。结束
我与该服务无关。使用“json to c#”之类的网络搜索可以找到很多其他的
如何使用它:
C# 看起来很像 JSON:
String first_name= firstN.Text;
String last_name=lastN.Text;
Data d = new Data(){
Name = new Name(){ FirstName = first_name, LastName = last_name }
};
string json = d.ToJson();
System.IO.File.WriteAllText(JsonFilePath, json);