Десериализовать JSON в список - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть Json:

{
  "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" в список. Я уверен, что это что-то очень простое, но я не могу понять, как это сделать, даже глядя на некоторые похожие примеры.

Может кто-нибудь помочь мне?

1 Ответ

2 голосов
/ 26 февраля 2020

Это просто

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

Вы должны понять лучше из этого примера

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