43

如何获取在 C# 中使用 json.net 获得的 JSON 数组的长度?发送 SOAP 调用后,我得到一个 JSON 字符串作为答案,我使用 json.net 来解析它。

我得到的json示例:

{"JSONObject": [
    {"Id":"ThisIsMyId","Value":"ThisIsMyValue"},
    {"Id":"ThisIsMyId2","Value":"ThisIsMyValue2"}
]}

我解析它并在控制台中编写它:

var test = JObject.Parse (json);
Console.WriteLine ("Id: {0} Value: {1}", (string)test["JSONObject"][0]["Id"], (string)test["JSONObject"][0]["Value"]);

这就像一个咒语,只是我不知道 的长度JSONObject,但我需要在 for 循环中进行。我只是不知道如何获得长度test["JSONObject"]

但是test["JSONObject"].Length我想像这样的事情太容易了:(..

4

5 回答 5

78

您可以将对象转换为 aJArray然后使用该Count属性,如下所示:

JArray items = (JArray)test["JSONObject"];
int length = items.Count;

然后,您可以按如下方式循环这些项目:

for (int i = 0; i < items.Count; i++)
{
    var item = (JObject)items[i];
    //do something with item
}

根据 Onno (OP),您还可以使用以下内容:

int length = test["JSONObject"].Count();

但是,我个人还没有确认这会起作用

于 2013-09-26T10:07:27.770 回答
2

我发现的最简单和最干净的方法:

int length = test["JSONObject"].Count;
于 2020-11-06T15:03:07.360 回答
2

JArray您可以使用下面的行来获取 .Net ( )中 JSON 数组的长度。

 int length = ((JArray)test["jsonObject"]).Count;
于 2018-03-15T10:10:38.757 回答
2

试试这个:

var test= ((Newtonsoft.Json.Linq.JArray)json).Count;
于 2019-06-27T06:59:15.397 回答
1

假设 json 数据位于 json 文件中,这对我有用。在这种情况下, .Length 有效,但没有可用的智能:

    public ActionResult Index()
    {
        string jsonFilePath = "C:\\folder\\jsonLength.json";
        var configFile = System.IO.File.ReadAllText(jsonFilePath);

        JavaScriptSerializer jss = new JavaScriptSerializer();
        var d = jss.Deserialize<dynamic>(configFile);

        var jsonObject = d["JSONObject"];
        int jsonObjectLength = jsonObject.Length;
        return View(jsonObjectLength);
    }
于 2020-05-29T22:17:04.523 回答