将每个已解析的JSON值存储到数组中

时间:2014-04-10 15:55:22

标签: c# arrays list parsing

我在C#中处理数组,如下面的代码所示,uricontent是一个List,其中每个字符串包含一个JSON值,我可以解析内容,但是,我想要另外一个数组或用于存储每个已解析值的列表,在下面的示例中,rooms变量可以存储每次一个JSON解析值,现在我希望将这些已解析的值存储在一个数组中。

        int i = 0;

        while (uricontent.Count != 0)
        {
            var rooms = JObject.Parse(uricontent[i].ToString())
            ["rooms"]
            .Select(x => new
            {
                roomID = (string)x["room_name"],
                Name = WebUtility.HtmlDecode((string)x["room_name"]),
                Price = PriceHelper.Convert((string)x["discountedTotal"]),
                Currency = (string)x["currency"],
                Occupan = (int)x["adult"]
            }).ToArray();



            i++;
        }
     

rooms {<> f_ AnonymousType11 [1]<> f _AnonymousType11 []

     
    
      
        
          
            

[0] {roomID ="高级1楼",姓名="高级1楼",价格= 207.4,货币=" EUR",Occupan = 2}

          
        
      
    
  

如上所示,房间会在每次迭代中覆盖数据,如何将这些值存储在另一个数组中      [1] .....      [2] ..... ....

由于

1 个答案:

答案 0 :(得分:0)

我认为您需要的是SelectMany方法。 SelectMany连接内部IEnumerables语句生成的所有Select,并将它们作为单个IEnumerable返回,然后可以将其转换为数组:

var rooms = uricontent
    .SelectMany(
        uriContentElementJson =>
        {
            JObject uriContentElement = JObject.Parse(uriContentElementJson);
            return uriContentElement["rooms"].Select(
                room => new
                {
                    RoomID = (string)room["room_name"],
                    Name = WebUtility.HtmlDecode((string)room["room_name"]),
                    Price = PriceHelper.Convert((string)room["discountedTotal"]),
                    Currency = (string)room["currency"],
                    Occupant = (int)room["adult"]
                });
        })
    .ToArray();