反序列化JSON以列出

时间:2020-02-26 17:57:39

标签: c# json list object json-deserialization

我有这个杰森:

{
  "trades": [
    {
      "id": "4004",
      "instrument": "EUR_USD",
      "price": "1.08938",
      "openTime": "2020-02-26T12:15:32.309973340Z",
      "initialUnits": "1",
      "initialMarginRequired": "0.0363",
      "state": "OPEN",
      "currentUnits": "1",
      "realizedPL": "0.0000",
      "financing": "0.0000",
      "dividendAdjustment": "0.0000",
      "unrealizedPL": "-0.0026",
      "marginUsed": "0.0362",
      "takeProfitOrder": {
        "id": "4005",
        "createTime": "2020-02-26T12:15:32.309973340Z",
        "type": "TAKE_PROFIT",
        "tradeID": "4004",
        "price": "1.09099",
        "timeInForce": "GTC",
        "triggerCondition": "DEFAULT",
        "state": "PENDING"
      }
    }
  ],
  "lastTransactionID": "4010"
}

和类:

public class TakeProfitOrder
{
    public string id { get; set; }
    public string createTime { get; set; }
    public string type { get; set; }
    public string tradeID { get; set; }
    public string price { get; set; }
    public string timeInForce { get; set; }
    public string triggerCondition { get; set; }
    public string state { get; set; }
}

public class Trade
{
    public string id { get; set; }
    public string instrument { get; set; }
    public string price { get; set; }
    public string openTime { get; set; }
    public string initialUnits { get; set; }
    public string initialMarginRequired { get; set; }
    public string state { get; set; }
    public string currentUnits { get; set; }
    public string realizedPL { get; set; }
    public string financing { get; set; }
    public string dividendAdjustment { get; set; }
    public string unrealizedPL { get; set; }
    public string marginUsed { get; set; }
    public TakeProfitOrder takeProfitOrder { get; set; }
}

public class RootObject
{
    public List<Trade> trades { get; set; }
    public string lastTransactionID { get; set; }
}

我反序列化:

var result = JsonConvert.DeserializeObject<RootObject>(Json);
var price = result.trades.Select(p => p.price).ToList();
price.ForEach(Console.WriteLine);

有效。我可以在“交易”中访问“价格”,但是我不知道如何在“ takeProfitOrder”中访问“价格”。我需要将“ takeProfitOrder”中“ price”的值添加到列表中。我相信这很简单,但是即使看了一些类似的例子,我也无法弄清楚该怎么做。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

很简单

result.trades.Select(p => p.takeProfitOrder.price)

您应该从此示例中更好地理解

foreach (Trade trade in result.trades)
{
    TakeProfitOrder takeProfitOrder = trade.takeProfitOrder;
    Console.WriteLine(takeProfitOrder.price);
}