Json парсинг и отображение ключей - PullRequest
3 голосов
/ 04 марта 2020

Я пытаюсь отобразить json, чтобы отправить его в другие приложения, которые ожидают данные в своих собственных форматах. Я использую AWS Лямбду, которая при срабатывании события GET ниже json, которая должна быть проанализированы и сопоставлены в соответствии с тем, что ожидает приложение. но стек ключей такой большой, например, "rateCode" в "ratePlan" в "Details", есть почти 20000 кодов тарифов, таких как "ab c", "xyz", ... это не очень хорошая идея для отображения как

if "rateCode" == "abc":
    application_two_dict["rate_code"] = 123

, поэтому есть еще много ключей, ключи которых имеют большой набор значений. Каков наилучший способ сопоставить эти ключи. Также это должно происходить двумя способами: например, когда мы получаем данные из второго приложения, нам нужно проанализировать json и сопоставить ключи другим способом, который понимает приложение, и наоборот.




{
    "customer": {
        "firstName": "john",
        "lastName": "doe",
        "email": "john.doe@test.com",
        "mailingAddress": {
            "address1": "123 N 1st st",
            "address2": "789",
            "countryCode": "USA",
            "stateCode": "AZ",
            "city": "Phoenix",
            "postalCode": "34567"
        },
        "telephoneNumber": {
            "telephoneNumber": "1235456789"
        }
    },
    "paymentAccount": {
        "firstName": "john",
        "lastName": "doe",
        "paymentAccountType": "VA",
        "expirationDate": "2021-05-31",
        "billingAddress": {
            "address1": "1234 N 1st st",
            "address2": "435",
            "city": "Phoenix",
            "countryCode": "USA",
            "postalCode": "213445",
            "stateCode": "AZ"
        }
    },
    "Details": {
        "123": [{
            "quantity": 1,
            "ratePlan": {
                "rateCode": "abc",
                "DetailsList": [{
                    "CategoryCode": "1234",
                }]
            }
    }
}

I до сих пор нет точного формата app2 json

пример json

например

app1 json

{
 "Details": {
        "123": [{
            "quantity": 1,
            "ratePlan": {
                "rateCode": "abc",
                "DetailsList": [{
                    "CategoryCode": "1234",
                }]
            }
        }
    }   
}

приложение 2 json

{
    user_details_code : 123,
    quantity : [1],
    rate_plan : {
        rate_code: "xyz",
        category_code : "US_SAN"
    }
}

1 Ответ

3 голосов
/ 04 марта 2020

Я бы попробовал следующие способы: - использовать две статические c карту с rateCode в качестве ключей

{"ab c": "123", ...} и {"123": "ab c", ...} и используйте их для получения значений из другого значения rateCode приложения.

  • используйте базу данных для извлечения rateCode для app2 на основе значения app1. Динамо имеет очень низкую задержку и может быть очень эффективным.

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

...