1

最後の配列を取得する必要がある複数の配列を含む Json 応答があります。ExpenseDescriptions を選択し、これだけを Linq を使用して ajax 呼び出しに返したいと考えています。ExpenseDescription は、常に返される最後の配列です。私の応答の構造は次のとおりです。

{
"Data": {
    "Items": [
        {
            "Result": {
                "Id": "Some Data"
            }
        },
        {
            "Result": {
                "Id": "Some More Data"
            }
        },
        {
            "Result": {
                "ExpenseDescriptions": [
                    {
                        "Code": "TRH8",
                        "Description": "Some Description",
                        "UnitCost": 0,
                        "MaxThreshold": 0,
                        "MinThreshold": 0
                    },
                    {
                        "Code": "VVFT3",
                        "Description": "Some Description",
                        "UnitCost": 0,
                        "MaxThreshold": 0,
                        "MinThreshold": 0
                    }
                ]
            }
        }
    ]
}
}

linq を使用していくつかの基本的な句を実行できますが、上記を実行できる方法を見つけたり見つけたりすることはできません。Linq でこれを行う際の助けをいただければ幸いです。

4

1 に答える 1

1

Newtonsoft.Json.Linq を使用したソリューションは次のとおりです。

using System;
using System.Linq;
using System.Text;
using Newtonsoft.Json.Linq;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = @"{'Data': {
    'Items': [
        {
            'Result': {
                'Id': 'Some Data'
            }
        },
        {
            'Result': {
                'Id': 'Some More Data'
            }
        },
        {
            'Result': {
                'ExpenseDescriptions': [
                    {
                        'Code': 'TRH8',
                        'Description': 'Some Description',
                        'UnitCost': 0,
                        'MaxThreshold': 0,
                        'MinThreshold': 0
                    },
                    {
                        'Code': 'VVFT3',
                        'Description': 'Some Description',
                        'UnitCost': 0,
                        'MaxThreshold': 0,
                        'MinThreshold': 0
                    }
                ]
            }
        }
    ]
}
}";
            JObject jsonobject = JObject.Parse(json);

            var last_array = jsonobject.Descendants().Last(x => x.Type == JTokenType.Array);

            foreach (var e in last_array)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

出力:

{
  "Code": "TRH8",
  "Description": "Some Description",
  "UnitCost": 0,
  "MaxThreshold": 0,
  "MinThreshold": 0
}
{
  "Code": "VVFT3",
  "Description": "Some Description",
  "UnitCost": 0,
  "MaxThreshold": 0,
  "MinThreshold": 0
}
于 2012-10-16T11:03:07.217 に答える