Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用json反序列化2d数组_C# - Fatal编程技术网

C# 如何使用json反序列化2d数组

C# 如何使用json反序列化2d数组,c#,C#,如何反序列化包含一个或多个数组的JSON {"InlineKeyboard":[ [{"Text":"sometext","Url":"someurl"},{"Text":"sometext","Url":"someurl"}], [{"Text":"sometext&qu

如何反序列化包含一个或多个数组的JSON

{"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很高兴能为您提供帮助。如果答案适合您,请将其标记为已接受(答案左侧的绿色勾选标记);)