login register Sysop! about ME  

2021년 02월 02일 15시 01분 00초,     조회수 : 153
  제목 : json 데이터 가져오는 방법이 궁금합니다.
SEQ : 164310 글쓴이 : chokhoon

작성 포맷 : TEXT 모드, 자동 줄바꿈 사용

부트페이라는 사이트를 이용하고 있습니다.
결제통지를 받아서 db 처리해주어야 하는 부분이 있는데요.
(https://docs.bootpay.co.kr/rest/feedback)

asp에서 통지되는 데이터를 어떻게 가져오는지가 궁금하네요.


형식은 application/json 이구요.


{   "receipt_id"         : "5ed49a271f7a92039adbc6bd",
    "pg"                : "kcp",
    "pg_name"         : "KCP",
    "method"           : "card",
    "method_name"   : "카드결제",
    "application_id"   : "59a568d3e13f3336c21bf707",
    "name"             : "테스트 부트페이 상품",
    "private_key"      : "pDc0NwlkEX3aSaHTp/PPL/i8vn5E/CqRChgyEp/gHD0=",
    "order_id"         : "1590991399",
    "payment_data"  : {
        "card_name"        : "하나카드",
        "card_no"            : "9430000000001000",
        "card_quota"        : "00",
        "card_auth_no"     : "07429171",
        "receipt_id"          : "5ed49a271f7a92039adbc6bd",
        "n"                    : "테스트 부트페이 상품",
        "p"                    : 1000,
        "tid"                  : "20403932882542",
        "pg"                  : "KCP",
        "pm"                 : "카드결제",
        "pg_a"               : "kcp",
        "pm_a"              : "card",
        "o_id"               : "1590991399",
        "p_at"               : "2020-06-01 15:04:29",
        "s"                   : 1,
        "g"                   : 2
    },
    "price"           : 1000,
    "retry_count"   : 0,
    "status"         : 1
}


이런식으로 통지 된다고 하는데요.


여기서 
receipt_id, order_id, card_no 가 필요하다면

receipt_id  = Request.Form("receipt_id")
order_id    = Request.Form("order_id")
card_no     = Request.Form("card_no")


이런식으로 가져오는게 맞나요?

  poporino
  2021-02-03(09:15)
캐릭 이미지
var data = JonConvert.Deserialize<변수클래스>();
위와 같은 방법으로 사용하실 수 있어요
변수 담을 클래스에
public string receipt_id {get; set;}
위와 같이 있다면
data.receipt_id 형태로 사용 가능 합니다.
Microsoft.Json 은 참조에 추가하시면 됩니다.
NuGet에서 Json 검색 후 설치한다음 사용하시면 되요.

  chokhoon
  2021-02-03(09:53)
답변 감사합니다.

그런데

{
"data":[
{
"aaa":"111",
"bbb":"222",
"ccc":"333"
},
{
"aaa":"444",
"bbb":"555",
"ccc":"666"
}
]
}

보통 이렇게 "data" 라는 변수명(?)이 있어야 하는거 아닌가요?

  poporino
  2021-02-03(13:06)
캐릭 이미지
위와 같은 경우는 아래와 같이 사용하시면 됩니다.

public class AA
{
public List<BB> data {get;set;}

}
public class BB
{
public string aaa {get;set;}
.
.
public string ccc {get;set;}
}

변수 클래스 안에 변수클래스 선언하여 사용 하시면됩니다.
var aa = JsonConvert.Deserialize<AA>(jsonString);

string ccc = aa.data[0].ccc;

  chokhoon
  2021-02-03(15:37)
poporino님 답변 감사합니다.

질문내용은 아래와 같이 post로 값을 보내준다고 할때

{
"order_id" : "1590991399",
"method" : "card",
"name" : "테스트상품"
}

아래와 같이 Request.Form 으로 데이터를 받으면

order_id = Request.Form("order_id")
method = Request.Form("method")
name = Request.Form("name")

결제건에 따라서 어떤건 데이터가 받아지고 또 어떤건 데이터가 안받아져서요.

  poporino
  2021-02-03(16:16)
캐릭 이미지
post로 반환 받았을때 asp에서 사용 시 chokhoon님께서 올려주신 방식이 맞는데
결제건에 따라서 어떤건 데이터가 받아지고 어떤건 안받아진다는건..
api 호출 시 데이터가 넘어올 때마다 변수가 달라서 그런가요?

보통은 null체크 해서 없는건 공란이나 다른 변수 가져와서요
name = Request.Form("name1") == null ? "" : Request.Form("name1");
name = Request.Form("name1") == null ? Request.Form("name2") :
Request.Form("name1");



  chokhoon
  2021-02-03(16:33)
일단 order_id 만 체크하고 있는데
결제내역을 post로 보내주는거라 Null 값이나 빈값은 없습니다.

담당자에게서 실제 보내준다는 값을 텍스트로 받아봤는데 모두정상이구요.
어떤건 받아지고 어떤건 안받아지니 답답해서요.
받아지는건 계속 받아지고 안받아지는건 계속 안받아지네요. TT

  poporino
  2021-02-03(17:06)
캐릭 이미지
안받아지는 변수명이 어떤건지 정확히 알 수 있을까요?
  poporino
  2021-02-03(17:09)
캐릭 이미지
혹시 아래의 경로가 도움 될 수 있을까요?
https://www.mikesdotnetting.com/article/293/request-form-is-empty-when-
posting-to-aspx-page

  chokhoon
  2021-02-03(17:51)
답변 감사합니다.

메신저로만 상담이 가능한 업체다 보니 대응이 좀 그렇네요.
데이터가 안받아지는게 딱 이틀정도의 기간내 데이터인것같아
업체에 체크 요청하였습니다.
담당자 확인 후 연락준다니 기다려봐야겠습니다.

Content-Type 을 application/x-www-form-urlencoded 로 세팅해야 하는데
application/json 으로 세팅한 기간에 결제한건 값이 안날아오는것 같은 느낌입니다.



제목 작성자 날짜 조회
json 데이터 가져오는 방법이 궁금합니다. (9) chokhoon 2021-02-02 153

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})