为 json 字符串创建 c# 类,其中有数字作为对象中的变量
Posted
技术标签:
【中文标题】为 json 字符串创建 c# 类,其中有数字作为对象中的变量【英文标题】:create c# class for json string which have number as variables in object 【发布时间】:2020-09-30 06:53:34 【问题描述】:我必须将以下 JSON 格式传递给 REST api。
"weconnect_validate":
"Row":[
"0":"44063fe6-fe22-11ea-bb30-005056923098::TEST10800::9888880470","1":"TEST10800"
]
现在这里发生的问题是我如何创建类
变量名称为 0 和 1 的行。
我已尝试关注
public class BasicRow
[JsonProperty("0")]
public string Zero get; set;
[JsonProperty("1")]
public string One get; set;
public class Weconnect_Validate
public BasicRow[] rows get; set;
但它不起作用。在调试模式下它正在通过
Row:["Zero":......
请提出一些技巧或不同的方法来创建 c# 类。
编辑
以下 json 对象我需要使用 http 客户端发送到 REST api。
"PWSESSIONRS":"PWPROCEs-s-rS":"PWDATA":"weconnect_validate":"Row":["0":"dc9a2d38-fe28-11ea-bb30-005056923098","1":"TEST10800"],"PWHEADER":"LOGIN_ID":"TEST10800","ORG_ID":"HSA","APP_ID":"HSA","IN_PROCESS_ID":"1","OUT_PROCESS_ID":"weconnect_validate"
我的问题是如何为这种类型的 json 字符串或对象构建 c# 类。
【问题讨论】:
你是用Newtonsoft.Json反序列化的吗? 也许你可以使用 ListQuickType.io 提出了这个建议,鉴于您断言 JsonProperty 不起作用,我首先想到的是 (Array of Dictionary
namespace SomeNamespaceHere
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public partial class RootClassNameHere
[JsonProperty("weconnect_validate")]
public WeconnectValidate WeconnectValidate get; set;
public partial class WeconnectValidate
[JsonProperty("Row")]
public Dictionary<string, string>[] Row get; set;
public partial class RootClassNameHere
public static RootClassNameHere FromJson(string json) => JsonConvert.DeserializeObject<RootClassNameHere>(json, SomeNamespaceHere.Converter.Settings);
public static class Serialize
public static string ToJson(this RootClassNameHere self) => JsonConvert.SerializeObject(self, SomeNamespaceHere.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
,
;
但是使用您提出的路线我实际上并没有遇到任何问题:
使用此代码:
public class Row
[JsonProperty("0")]
public string Zero get; set;
[JsonProperty("1")]
public string One get; set;
public class WeconnectValidate
public List<Row> Row get; set;
public class Root
[JsonProperty("weconnect_validate")]
public WeconnectValidate WeconnectValidate get; set;
像这样使用:
var x = JsonConvert.SerializeObject(new Root()
WeconnectValidate = new WeconnectValidate()
Row = new List<Row>()
new Row() Zero = "a", One = "b" ,
new Row() Zero = "c", One = "d"
);
使用最新的 Newtonsoft.Json
【讨论】:
以上是关于为 json 字符串创建 c# 类,其中有数字作为对象中的变量的主要内容,如果未能解决你的问题,请参考以下文章
JSON C# Class Generator ---由json字符串生成C#实体类的工具