Как назначить JSON элементов для двумерного массива во время цикла - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь назначить два элемента (идентификатор пользователя, количество) на одном уровне в объекте JSON в двумерный массив для каждого идентификатора пользователя в объекте JSON (предположим, что этот объект имеет 10 идентификаторов пользователя, поэтому 2D-массив должен содержать 10 строк с идентификатором пользователя в столбце 0 и суммой в столбце 1):

JSON
    {"page":"1",
     "per_page":10,
     "total":100,
     "total_pages":10,
     "data":[{"id":1,
              "userId":1,
              "userName":"Jim Silver", 
              "timestamp":16425382171,
              "txnType":"debit",
              "amount":"$1,000.07",
              "location":{"id":2,
                          "address":"654, Somewhere, Some Street", 
                          "city":"Some City",
                          "zipCode":12345},
                          "ip":"202.210.105.105"},
          {"id":2," ...}

Результат должен быть (сумма преобразуется в целое число и применен Math.Floor):

[1, 1000] // User ID = 1, corresponding amount = 1000
[2, 2000] // User ID = 2, ...
[3, 3000]
[4, 4000]
...

Я смоделировал свой JSON с тремя классами, изображающими три уровня в объекте JSON.

Я объявил двумерный массив: int[,] userTxnsArr = new int[1, model.data.Count]; (10 строк, 2 столбца)

Теперь l oop через десериализованный объект JSON в модели:

for (int datum = 0; datum < model.data.Count; datum++)
{
    userID = model.data[datum].id;
    userAmount = Convert.ToInt32(Math.Floor(decimal.Parse(model.data[datum].amount, System.Globalization.NumberStyles.Currency)));
    userTxnsArr = new int[,] { { userID, userAmount } };
}

Но я получаю только последнюю JSON запись в двумерном массиве (поэтому только одна строка данных ). Как назначить каждую запись JSON в каждую строку 2D-массива? Заранее спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

Мне не хватает информации об этом, поэтому я сделаю вывод, что-то здесь или там.

Я предполагаю, что:

  • У вас есть вся информация в вашем "page": "1"
  • Используемый язык может быть javascript
  • Если это не тот язык, который вам нужен, алгоритм будет очень похож из-за языковой природы

Я позволил себе создать некоторые переменные, чтобы упростить некоторые вещи, затем ... когда я говорю jsonData, хорошо ... это ваши JSON данные, здесь чудес не бывает.

I ' Я протестировал его, используя nodejs, просто чтобы не видеть JSON, но он будет работать и в современных браузерах (непосредственно назначая данные JSON)

// Imagine your shining-beautiful JSON here
const jsonData = require('./data.json');

// This is your "JSON page 1" data field (array of things)
const elements = jsonData.data;

// Write your helper to convert the "amount" string into something you need
function convertAmount(rawAmount) {
        // Your amount parser should come here (currency string -> the int you want)
        // I'm just returning directly, you may change it to use
        return rawAmount;
}

// This.... is the 2D Array that you want (quite obvious variable name)
const the2DArrayYouWant = elements.map(element => [
        element['userId'],
        convertAmount(element['amount'])
]);


console.log(the2DArrayYouWant);

В приведенном выше коде здесь the2DArrayYouWant - это массив массивов, теперь вы можете выполнять итерацию и ... возможно сделать уменьшение или что-то в этом роде.

console.log в конце должен показать вам что-то вроде это:

[
  [ 1, '$1,000.07' ],
  [ 42, '$1,135.25' ],
  [ 156, '$9,040.00' ],
  ...
]

Примечание. Если вы не понимаете фрагменты кода element => ([ ... ]), это просто функции без имен.

* 103 2 *

Надеюсь, это поможет, весело провести время!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...