C# 如何使用json反序列化2d数组
如何反序列化包含一个或多个数组的JSONC# 如何使用json反序列化2d数组,c#,C#,如何反序列化包含一个或多个数组的JSON {"InlineKeyboard":[ [{"Text":"sometext","Url":"someurl"},{"Text":"sometext","Url":"someurl"}], [{"Text":"sometext&qu
{"InlineKeyboard":[
[{"Text":"sometext","Url":"someurl"},{"Text":"sometext","Url":"someurl"}],
[{"Text":"sometext","Url":"someurl"},{"Text":"sometext","Url":"someurl","}]
]}
这就是我创建的类:
public class InlineKeyboard
{
[JsonProperty("InlineKeyboard")]
public List<Keyboard> keyboards { get; set; }
}
public class Keyboard
{
[JsonProperty("Text")]
public string Text { get; set; }
[JsonProperty("Url")]
public string Url { get; set; }
}
在线键盘中的公共类
{
[JsonProperty(“InlineKeyboard”)]
公用列表键盘{get;set;}
}
公共类键盘
{
[JsonProperty(“文本”)]
公共字符串文本{get;set;}
[JsonProperty(“Url”)]
公共字符串Url{get;set;}
}
这就是我试图反序列化的方式:
var keyboard = JsonConvert.DeserializeObject<List<InlineKeyboard>>(replymarkup);
var-keyboard=JsonConvert.DeserializeObject(replymarkup);
错误:
因为该类型需要一个JSON数组(例如[1,2,3])才能正确反序列化。
要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])
请注意,我称之为2d array的不是真正的2d array(如
int[,]
),而是List
的某些用法,您所讨论的json无效(最后有额外的,“
),但如果您修复了此问题,您可以使用以下命令对其进行反序列化:
public class InlineKeyboard
{
[JsonProperty("InlineKeyboard")]
public List<List<Keyboard>> keyboards { get; set; }
}
public class Keyboard
{
[JsonProperty("Text")]
public string Text { get; set; }
[JsonProperty("Url")]
public string Url { get; set; }
}
var keyboard = JsonConvert.DeserializeObject<InlineKeyboard>(replymarkup);
在线键盘中的公共类
{
[JsonProperty(“InlineKeyboard”)]
公用列表键盘{get;set;}
}
公共类键盘
{
[JsonProperty(“文本”)]
公共字符串文本{get;set;}
[JsonProperty(“Url”)]
公共字符串Url{get;set;}
}
var keyboard=JsonConvert.DeserializeObject(replymarkup);
您的根json元素是一个对象,而不是数组,因此您应该反序列化为一个对象(
InlineKeyboard
),而不是对象的List
。但是InlineKeyboard
是数组的数组,所以您需要相应地更改InlineKeyboard.keyboards
属性类型。您想将数组的数组展平到列表中,还是希望得到列表的列表,或者您实际上在询问如何得到2d数组作为结果?(我在编辑时假设您正在查找列表
-请随时更新问题,甚至恢复编辑)首先感谢您的快速回复兄弟!我尝试了此代码,最后没有出现错误!但不幸的是“键盘"我插入的反序列化是空的:/@OnePixel你能添加一个复制器吗?因为它带有更正的json表单question.brooo!!你让我过了一周!!问题是在那之前我使用了其他json库,url和文本是小写的..所以我更改了它和它的工作!!兄弟,我花了一整天的时间试图修复它..你是一个传奇人物非常感谢!!!!@OnePixel很高兴能为您提供帮助。如果答案适合您,请将其标记为已接受(答案左侧的绿色勾选标记);)