JsonConvert.DeserializeAnonymousType定义语法问题

时间:2019-03-19 11:45:58

标签: c# arrays definition jsonconvert

我有以下代码:

var definition = new { result = "", accountinformation = new[] { "" ,  "" , "" } };

var accountInformationResult = JsonConvert.DeserializeAnonymousType(responseBody, definition);

帐户信息结构从端点作为数组返回,每个元素是另一个包含3个字符串的数组。因此,嵌入式数组不是键值对格式。通过以上定义,accountinginformation返回null。这种结构的语法应该是什么?

作为参考,这是php端点中发生的事情。

$account_information[] = array( $billing_company, $customer_account_number, $customer_account_manager );

第一行是循环的。因此是多维数组。

echo json_encode(array('result'=>$result, 'account_information'=>$account_information));

我知道我可以使用动态功能,但是为什么要付出额外的努力呢?

1 个答案:

答案 0 :(得分:0)

我认为您的json看起来像这样:

{
  "result": "the result",
  "account_information": [
    ["company1", "account_number1", "account_manager1"],
    ["company2", "account_number2", "account_manager2"]
  ]
}

在这种情况下,您应该可以使用以下定义进行反序列化(请注意account_information中的下划线:

var definition = new { result = "", account_information = new List<string[]>() };

在json中,您可以在数据模型更改时随意添加其他属性。因此,如果定义的数据模型不包含这些属性之一,则将简单地忽略该属性。在您的情况下,定义没有名为account_information的属性(完全),因此在反序列化时会忽略json的这一部分。

编辑: 无论如何,如果这将是一个匿名对象,您也可以考虑将其解析为JObject

var obj = JObject.Parse(responseBody);
string firstCompany = obj["account_information"][0][0];
string secondCompany = obj["account_information"][1][0];