Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Transform JSON array with subobjects to internal table

Former Member
0 Likes
1,221

hi Experts

I apologize if there are examples of this already and I am simply searching incorrectly.  I have however looked and cannot find an example solution or guidance to transform a JSON response like the one below, into an internal table.

The response I get is like this:

{"userAgreementList":[{"displayDate":"2014-11-17T09:58:13-08:00","displayUserInfo":{"fullNameOrEmail":"xxx@xxxl.com"},"esign":true,"agreementId":"xxxx","latestVersionId":"xxx","name":"test","status":

"OUT_FOR_SIGNATURE"},{"displayDate":"2014-11-17T08

:27:04-08:00","displayUserInfo":{"company":"xx","fullNameOrEmail":"x"},"esign":true,"agreementId":"xxx","latestVersionId":"xx","name":"test":"SIGNED"}]}

As you can see I have the sub section fullNameOrEmail which I cant seem to get correctly into an internal table.  I keep getting the match exception upon transformation.

Anyhow, I appreciate any help given.

Thank you kindly!

Chris

1 ACCEPTED SOLUTION
Read only

custodio_deoliveira
Active Contributor
0 Likes
813

Hi Chris,

Could you share some code so we can see what might be wrong?

Cheers,

Custodio

4 REPLIES 4
Read only

custodio_deoliveira
Active Contributor
0 Likes
814

Hi Chris,

Could you share some code so we can see what might be wrong?

Cheers,

Custodio

Read only

0 Likes
813

hi Custodio,

I make a call to get the JSON response, so

CALL METHOD send_get_request
     EXPORTING
       iv_url           = rest_url
       it_header_params = lt_params
     RECEIVING
       rv_response      = l_json.


l_json looks like this:

{

"userAgreementList":

[{"displayDate":"2014-11-17T09:58:13-08:00",

"displayUserInfo":{"fullNameOrEmail":"xxx@xxxl.com"},

"esign":true,"agreementId":"xxxx","latestVersionId":"xxx","name":"test","status":

"OUT_FOR_SIGNATURE"},

{"displayDate":"2014-11-17T08

:27:04-08:00",

"displayUserInfo":{"company":"xx","fullNameOrEmail":"x"},"esign":true,"agreementId":"xxx","latestVersionId":"xx","name":"test":"SIGNED"}]}

then I call ID transformation to process.

CALL TRANSFORMATION id SOURCE XML l_json RESULT useragreementlist = rt_agreements


I continue to get the CX_ST_MATCH exception.

If I do:

REPLACE FIRST OCCURRENCE OF 'userAgreementList' IN l_json WITH 'USERAGREEMENTLIST'.
REPLACE ALL OCCURRENCES OF 'displayDate' IN l_json WITH 'DISPLAY_DATE'.
REPLACE ALL OCCURRENCES OF 'fullNameOrEmail' IN l_json WITH 'FULL_NAME_OR_EMAIL'.
REPLACE ALL OCCURRENCES OF 'esign' IN l_json WITH 'ESIGN'.
REPLACE ALL OCCURRENCES OF 'agreementId' IN l_json WITH 'AGREEMENT_ID'.
REPLACE ALL OCCURRENCES OF 'name' IN l_json WITH 'NAME'.
REPLACE ALL OCCURRENCES OF 'status' IN l_json WITH 'STATUS'.


CALL TRANSFORMATION id SOURCE XML l_json RESULT useragreementlist = rt_agreements.


I get display_date, esign, agreement_id, name, status.


I am missing company, fullnameoremail and latestversionid,


hope that helps.  I appreciate anything you can do!


Thx

Chris

Read only

0 Likes
813

So, I just tried something.  I created a structure and table type for the displayuserinfo object and added it to my agreements structure.  I did the following and now I get the data.

REPLACE FIRST OCCURRENCE OF 'userAgreementList' IN l_json WITH 'USERAGREEMENTLIST'.
   REPLACE ALL OCCURRENCES OF 'displayDate' IN l_json WITH 'DISPLAY_DATE'.
   REPLACE ALL OCCURRENCES OF 'fullNameOrEmail' IN l_json WITH 'FULL_NAME_OR_EMAIL'.
   REPLACE ALL OCCURRENCES OF ',"esign' IN l_json WITH '], "ESIGN'.
   REPLACE ALL OCCURRENCES OF 'agreementId' IN l_json WITH 'AGREEMENT_ID'.
   REPLACE ALL OCCURRENCES OF 'name' IN l_json WITH 'NAME'.
   REPLACE ALL OCCURRENCES OF 'status' IN l_json WITH 'STATUS'.
   REPLACE ALL OCCURRENCES OF 'displayUserInfo":' IN l_json WITH 'DISPLAY_USER_INFO":['.


Shouldn't there be some other standard way to get this data without having to hack it up like this?  The structure/table type isnt the issue but all the replace statements is insane depending on the JSON response.

Read only

0 Likes
813

Hi Chris,

Believe or not, this solution is pretty much what I was going to suggest

Yes, it should be a better/easier way. Maybe if you use 's ZJSON it helps?

Cheers,

Custodio