json 응답에서 데이터 읽기

user5775380

Delphi 10 Seattle로 애플리케이션을 개발 중입니다.

JSON에서 항목 값을 읽으려고합니다.

예 :

{  
  "findCompletedItemsResponse":[  
    {  
      "ack":[  
        "Success"
      ],
      "version":[  
        "1.13.0"
      ],
      "timestamp":[  
        "2016-06-02T16:07:36.736Z"
      ],
      "searchResult":[  
        {  
          "@count":"2",
          "item":[  
            {  
              "itemId":[  
                "172168793372"
              ],
              "title":[  
                "Nikon D5000 12.3 MP Digital SLR Camera (Body Only with Accessories)"
              ],
              "globalId":[  
                "EBAY-US"
              ],
              "primaryCategory":[  
                {  
                  "categoryId":[  
                    "31388"
                  ],
                  "categoryName":[  
                    "Digital Cameras"
                  ]
                }
              ],
              "galleryURL":[  
                "http:\/\/thumbs1.ebaystatic.com\/m\/mlRCNAriHPzowbSV9Q7ZFAg\/140.jpg"
              ],
              "viewItemURL":[  
                "http:\/\/www.ebay.com\/itm\/Nikon-D5000-12-3-MP-Digital-SLR-Camera-Body-Only-Accessories-\/172168793372"
              ],
              "paymentMethod":[  
                "PayPal"
              ],
              "autoPay":[  
                "false"
              ],
              "postalCode":[  
                "02806"
              ],
              "location":[  
                "Barrington,RI,USA"
              ],
              "country":[  
                "US"
              ],
              "shippingInfo":[  
                {  
                  "shippingServiceCost":[  
                    {  
                      "@currencyId":"USD",
                      "__value__":"0.0"
                    }
                  ],
                  "shippingType":[  
                    "Free"
                  ],
                  "shipToLocations":[  
                    "US"
                  ],
                  "expeditedShipping":[  
                    "true"
                  ],
                  "oneDayShippingAvailable":[  
                    "false"
                  ],
                  "handlingTime":[  
                    "2"
                  ]
                }
              ],
              "sellingStatus":[  
                {  
                  "currentPrice":[  
                    {  
                      "@currencyId":"USD",
                      "__value__":"178.5"
                    }
                  ],
                  "convertedCurrentPrice":[  
                    {  
                      "@currencyId":"USD",
                      "__value__":"178.5"
                    }
                  ],
                  "bidCount":[  
                    "13"
                  ],
                  "sellingState":[  
                    "EndedWithSales"
                  ]
                }
              ],
              "listingInfo":[  
                {  
                  "bestOfferEnabled":[  
                    "false"
                  ],
                  "buyItNowAvailable":[  
                    "false"
                  ],
                  "startTime":[  
                    "2016-04-18T18:45:54.000Z"
                  ],
                  "endTime":[  
                    "2016-04-25T18:45:54.000Z"
                  ],
                  "listingType":[  
                    "Auction"
                  ],
                  "gift":[  
                    "false"
                  ]
                }
              ],
              "returnsAccepted":[  
                "false"
              ],
              "condition":[  
                {  
                  "conditionId":[  
                    "3000"
                  ],
                  "conditionDisplayName":[  
                    "Used"
                  ]
                }
              ],
              "isMultiVariationListing":[  
                "false"
              ],
              "topRatedListing":[  
                "false"
              ]
            },
            {  
              "itemId":[  
                "172200026135"
              ],
              "title":[  
                "Nikon D5000 12.3 MP Digital SLR Camera (Body Only with Accessories)"
              ],
              "globalId":[  
                "EBAY-US"
              ],
              "primaryCategory":[  
                {  
                  "categoryId":[  
                    "31388"
                  ],
                  "categoryName":[  
                    "Digital Cameras"
                  ]
                }
              ],
              "galleryURL":[  
                "http:\/\/thumbs4.ebaystatic.com\/m\/mlRCNAriHPzowbSV9Q7ZFAg\/140.jpg"
              ],
              "viewItemURL":[  
                "http:\/\/www.ebay.com\/itm\/Nikon-D5000-12-3-MP-Digital-SLR-Camera-Body-Only-Accessories-\/172200026135"
              ],
              "paymentMethod":[  
                "PayPal"
              ],
              "autoPay":[  
                "false"
              ],
              "postalCode":[  
                "02806"
              ],
              "location":[  
                "Barrington,RI,USA"
              ],
              "country":[  
                "US"
              ],
              "shippingInfo":[  
                {  
                  "shippingServiceCost":[  
                    {  
                      "@currencyId":"USD",
                      "__value__":"0.0"
                    }
                  ],
                  "shippingType":[  
                    "Free"
                  ],
                  "shipToLocations":[  
                    "US"
                  ],
                  "expeditedShipping":[  
                    "true"
                  ],
                  "oneDayShippingAvailable":[  
                    "false"
                  ],
                  "handlingTime":[  
                    "2"
                  ]
                }
              ],
              "sellingStatus":[  
                {  
                  "currentPrice":[  
                    {  
                      "@currencyId":"USD",
                      "__value__":"119.49"
                    }
                  ],
                  "convertedCurrentPrice":[  
                    {  
                      "@currencyId":"USD",
                      "__value__":"119.49"
                    }
                  ],
                  "bidCount":[  
                    "2"
                  ],
                  "sellingState":[  
                    "EndedWithSales"
                  ]
                }
              ],
              "listingInfo":[  
                {  
                  "bestOfferEnabled":[  
                    "false"
                  ],
                  "buyItNowAvailable":[  
                    "false"
                  ],
                  "startTime":[  
                    "2016-05-10T07:22:34.000Z"
                  ],
                  "endTime":[  
                    "2016-05-16T19:22:25.000Z"
                  ],
                  "listingType":[  
                    "Auction"
                  ],
                  "gift":[  
                    "false"
                  ]
                }
              ],
              "returnsAccepted":[  
                "false"
              ],
              "condition":[  
                {  
                  "conditionId":[  
                    "3000"
                  ],
                  "conditionDisplayName":[  
                    "Used"
                  ]
                }
              ],
              "isMultiVariationListing":[  
                "false"
              ],
              "topRatedListing":[  
                "false"
              ]
            }
          ]
        }
      ],
      "paginationOutput":[  
        {  
          "pageNumber":[  
            "1"
          ],
          "entriesPerPage":[  
            "100"
          ],
          "totalPages":[  
            "1"
          ],
          "totalEntries":[  
            "2"
          ]
        }
      ]
    }
  ]
}

이베이에 나열된 항목의 가격 만 추출하고 싶습니다. 나는 currentPrice.

가격의 가치 만 변수로 추출하려면 어떻게해야합니까?

레미 르보

이것은 끔찍한 JSON입니다. 이 데이터를 디자인 한 사람은 JSON을 전혀 이해하지 못합니다. 이 JSON은 요소가 1 개인 배열과 문자열 값을 지나치게 많이 사용합니다. 대부분의 배열은 전혀 속하지 않으며 JSON에는 다른 데이터 유형 (부울, 정수 등)을 사용할 수 있습니다.

어떤 경우 든 Delphi의 내장 JSON 프레임 워크 를 사용하여이 JSON을 구문 분석 할 수 있습니다 . 예 :

uses
  System.JSON;

var
  json: string;
  obj: TJSONObject;
  completedItems, sresults, items, status, price: TJSONArray;
  I, J, K: Integer;
  currencyId, value: string;
begin
  json := ...; // <-- your JSON string here
  obj := TJSONObject.ParseJSONValue(json, 0) as TJSONObject;
  try
    completedItems := obj.Values['findCompletedItemsResponse'] as TJSONArray;
    for I := 0 to completedItems.Count-1 do
    begin
      sresults := (completedItems.Items[I] as TJSONObject).Values['searchResult'] as TJSONArray;
      for J := 0 to sresults.Count-1 do
      begin
        items := (sresults.Items[J] as TJSONObject).Values['item'] as TJSONArray;
        for K := 0 to items.Count-1 do
        begin
          status := (items.Items[K] as TJSONObject).Values['sellingStatus'] as TJSONArray;
          price := ((status.Items[0] as TJSONObject).Values['currentPrice']) as TJSONArray;
          currencyId := price.Values['@currencyId'].Value;
          value := price.Values['__value__'].Value;
          // use price values as needed...
        end;
      end;
    finally
      obj.Free;
    end;
  end;

또는 :

uses
  System.JSON, System.JSON.Types;

var
  json: string;
  sreader: TStringReader;
  jreader: TJsonTextReader;
  inCurrentPrice: Boolean;
  currencyId, value: string;
begin
  json := ...; // <-- your JSON string here
  sreader := TStringReader.Create(json);
  try
    jreader := TJsonTextReader.Create(sreader);
    try
      inCurrentPrice := False;
      while jreader.Read do
      begin
        case jreader.TokenType of
          TJsonToken.PropertyName: begin
            if inCurrentPrice then
            begin
              if jreader.Value.AsString = 'currencyId' then begin
                currencyId := jreader.ReadAsString;
              end
              else if jreader.Value.AsString = '__value__' then begin
                value := jreader.ReadAsString;
              end;
            end
            else if jreader.Value.AsString = 'currentPrice' then
            begin
              currencyId := '';
              value := '';
              inCurrentPrice := True;
            end;
          end;
          TJsonToken.EndArray: begin
            if inCurrentPrice then
            begin
              inCurrentPrice := False;
              // use currency values as needed...
            end;
          end;
        end;
      end;
    finally
      jreader.Free;
    end;
  finally
    sreader.Free;
  end;
end;

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

json 응답, 데이터 읽기

분류에서Dev

JSON 응답에서 데이터 가져 오기

분류에서Dev

JSON HTTP 응답에서 개체 읽기

분류에서Dev

Windows Power Shell에서 JSON 응답 읽기

분류에서Dev

Json Post Call Swift에서 응답 읽기

분류에서Dev

이상한 JSON 배열 응답에서 데이터 가져 오기

분류에서Dev

JSON 응답에서 데이터 저장

분류에서Dev

C # Web API에서 응답 대신 데이터 읽기

분류에서Dev

API 응답에서 데이터 읽기 | iOS

분류에서Dev

JSON 응답 데이터 크기 문제

분류에서Dev

Delphi 7 : 웹 사이트에서 읽은 JSON 응답의 utf-8 데이터 처리

분류에서Dev

html 객체 내부에서 json 데이터를 가져오고 객체는 ajax에서 응답 받기

분류에서Dev

JSON 응답에서 데이터를 구문 분석하고 목록보기에 채우기

분류에서Dev

Json 데이터 읽기

분류에서Dev

Ext JS Store에서 리더기 전에 JSON 응답 읽기

분류에서Dev

sequelize.js에서 잘못된 개체 이름 가져 오기 JSON 응답에 데이터에서 데이터로 메서드 포함

분류에서Dev

c # json에서 하위 데이터 읽기

분류에서Dev

Python으로 JSON 파일에서 데이터 읽기

분류에서Dev

Laravel 컨트롤러에서 Json 데이터 읽기

분류에서Dev

.json 파일 (TypeScript)에서 데이터 읽기

분류에서Dev

쉘 스크립트에서 JSON 데이터 읽기

분류에서Dev

XML 프로그램에서 C #으로 JSON 데이터 읽기

분류에서Dev

hasoffer API에서 json 데이터 읽기 문제

분류에서Dev

PHP의 JSON 데이터에서 변수 읽기 및 저장

분류에서Dev

JSON 파일에서 JS로 데이터 읽기 및 계산

분류에서Dev

Pandas 데이터 프레임에서 직렬화 된 json 읽기

분류에서Dev

Javascript 또는 GAS에서 특정 데이터를 가져 오기 위해 JSON 응답을 루프하는 방법

분류에서Dev

nodejs (mocha 테스트)의 POST 요청에서 JSON 응답 데이터를 기다립니다.

분류에서Dev

Ember 2.x로 Auth0 / facebook JSON 응답에서 데이터 가져 오기

Related 관련 기사

  1. 1

    json 응답, 데이터 읽기

  2. 2

    JSON 응답에서 데이터 가져 오기

  3. 3

    JSON HTTP 응답에서 개체 읽기

  4. 4

    Windows Power Shell에서 JSON 응답 읽기

  5. 5

    Json Post Call Swift에서 응답 읽기

  6. 6

    이상한 JSON 배열 응답에서 데이터 가져 오기

  7. 7

    JSON 응답에서 데이터 저장

  8. 8

    C # Web API에서 응답 대신 데이터 읽기

  9. 9

    API 응답에서 데이터 읽기 | iOS

  10. 10

    JSON 응답 데이터 크기 문제

  11. 11

    Delphi 7 : 웹 사이트에서 읽은 JSON 응답의 utf-8 데이터 처리

  12. 12

    html 객체 내부에서 json 데이터를 가져오고 객체는 ajax에서 응답 받기

  13. 13

    JSON 응답에서 데이터를 구문 분석하고 목록보기에 채우기

  14. 14

    Json 데이터 읽기

  15. 15

    Ext JS Store에서 리더기 전에 JSON 응답 읽기

  16. 16

    sequelize.js에서 잘못된 개체 이름 가져 오기 JSON 응답에 데이터에서 데이터로 메서드 포함

  17. 17

    c # json에서 하위 데이터 읽기

  18. 18

    Python으로 JSON 파일에서 데이터 읽기

  19. 19

    Laravel 컨트롤러에서 Json 데이터 읽기

  20. 20

    .json 파일 (TypeScript)에서 데이터 읽기

  21. 21

    쉘 스크립트에서 JSON 데이터 읽기

  22. 22

    XML 프로그램에서 C #으로 JSON 데이터 읽기

  23. 23

    hasoffer API에서 json 데이터 읽기 문제

  24. 24

    PHP의 JSON 데이터에서 변수 읽기 및 저장

  25. 25

    JSON 파일에서 JS로 데이터 읽기 및 계산

  26. 26

    Pandas 데이터 프레임에서 직렬화 된 json 읽기

  27. 27

    Javascript 또는 GAS에서 특정 데이터를 가져 오기 위해 JSON 응답을 루프하는 방법

  28. 28

    nodejs (mocha 테스트)의 POST 요청에서 JSON 응답 데이터를 기다립니다.

  29. 29

    Ember 2.x로 Auth0 / facebook JSON 응답에서 데이터 가져 오기

뜨겁다태그

보관