获取json数据单个字段数据

获取json数据单个字段数据,第1张

、、、

TYPES:BEGIN OF gty_data1,

index TYPE i,

pernrTYPE pa0001-pernr,

nameTYPE pa0002-nachn,

sexTYPE char2,

phoneTYPE usrid,

END OF gty_data1,

BEGIN OF gty_data2,

index TYPE i,

pernrTYPE pa0001-pernr,

phoneTYPE usrid,

END OF gty_data2,

BEGIN OF gty_data3,

index TYPE string,

pernrTYPE string,

nameTYPE string,

sexTYPE string,

phoneTYPE string,

END OF gty_data3.

DATA:gt_data1TYPE TABLE OF gty_data1,

gt_data2TYPE TABLE OF gty_data2,

gt_data3TYPE TABLE OF gty_data3,

gt_fcatTYPE lvc_t_fcat.

DATA:gs_data1TYPE gty_data1,

gs_data2TYPE gty_data2,

gs_data3TYPE gty_data3,

gs_fcatTYPE lvc_s_fcat.

DATA:serializerTYPE REF TO cl_trex_json_serializer,

deserializerTYPE REF TO cl_trex_json_deserializer,

ref_descrTYPE REF TO cl_abap_structdescr.

DATA:gv_jsonTYPE string.

FIELD-SYMBOLS:TYPE STANDARD TABLE.

START-OF-SELECTION.

PERFORM frm_sc_data."生产数据

PERFORM frm_sc_json."生产json数据

PERFORM frm_get_data."生成动态内表,

PERFORM frm_display_data."获取想要数据,显示数据

END-OF-SELECTION.

*&---------------------------------------------------------------------*

*&      Form  FRM_SC_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_sc_data.

gs_data1-index = '2'.

gs_data1-pernr= '10000002'.

gs_data1-name= '男2号'.

gs_data1-sex= '男'.

gs_data1-phone= '12568956892'.

APPEND gs_data1TO gt_data1.

gs_data1-index = '3'.

gs_data1-pernr= '10000003'.

gs_data1-name= '女3号'.

gs_data1-sex= '女'.

gs_data1-phone= '12568956893'.

APPEND gs_data1TO gt_data1.

gs_data1-index = '4'.

gs_data1-pernr= '10000004'.

gs_data1-name= '女1号'.

gs_data1-sex= '女'.

gs_data1-phone= '12568956894'.

APPEND gs_data1TO gt_data1.

gs_data1-index = '5'.

gs_data1-pernr= '10000005'.

gs_data1-name= '男5号'.

gs_data1-sex= '男'.

gs_data1-phone= '12568956895'.

APPEND gs_data1TO gt_data1.

gs_data1-index = '6'.

gs_data1-pernr= '10000006'.

gs_data1-name= '男6号'.

gs_data1-sex= '男'.

gs_data1-phone= '12568956896'.

APPEND gs_data1TO gt_data1.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  FRM_SC_DYN_TAB

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_sc_json.

CREATE OBJECT serializer

EXPORTING

data = gt_data1[].

serializer->serialize( ).

gv_json= serializer->get_data( ).

WRITE: / gv_json.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  FRM_GET_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_get_data.

DATA:dyn_tableTYPE REF TO data.

DATA:lv_p1TYPE i,

lv_p2TYPE i,

lv_lTYPE i,

lv_textTYPE string,

lv_text1TYPE string,

lv_lenTYPE i,

lv_fieldTYPE string,

lv_indexTYPE i.

SEARCH gv_jsonFOR '{'.

IF sy-subrc= 0.

lv_p1= sy-fdpos +1.

ENDIF.

SEARCH gv_jsonFOR '}'.

IF sy-subrc= 0.

lv_p2= sy-fdpos.

ENDIF.

lv_l= lv_p2- lv_p1.

lv_text= gv_json+lv_p1(lv_l).

WRITE:/ lv_text.

DO.

CLEAR:lv_p1,lv_p2,lv_len.

lv_len= strlen( lv_text).

SEARCH lv_textFOR '"'.

IF sy-subrc= 0.

lv_p1= sy-fdpos.

ENDIF.

SEARCH lv_textFOR ','.

IF sy-subrc= 0.

lv_p2= sy-fdpos.

ENDIF.

IF lv_p2IS INITIAL.

lv_l= lv_len- lv_p1.

ELSE.

lv_l= lv_p2- lv_p1 +1.

ENDIF.

IF lv_p1IS INITIAL.

EXIT.

ENDIF.

lv_text1= lv_text+lv_p1(lv_l).

REPLACE lv_text1WITH '' INTO lv_text.

ENDDO.

WRITE:/ lv_text.

CONDENSE lv_textNO-GAPS.

DO.

lv_index= sy-index.

SPLIT lv_textAT ':' INTO lv_field lv_text.

IF sy-subrc= 0.

gs_fcat-fieldname= lv_field.

gs_fcat-col_pos= lv_index.

gs_fcat-inttype= 'g'.

*    gs_fcat-intlen    = 8.

*      gs_fcat-scrtext_l = '描述'."加上以后可直接用于ALV显示所需结构

APPEND gs_fcatTO gt_fcat.

ELSE.

EXIT.

ENDIF.

IF lv_textIS INITIAL."当字符串为空时,拆分字符sy-subrc= 0

EXIT.

ENDIF.

ENDDO.

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog= gt_fcat

IMPORTING

ep_table= dyn_table.

ASSIGN dyn_table->*TO .

*  CREATE DATA dyn_line LIKE LINE OF <dyn_tab>."可生产结构

*    ASSIGN dyn_line->* TO <dyn_line>.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  FRM_DISPLAY_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_display_data.

CREATE OBJECT deserializer.

deserializer->deserialize(

EXPORTING json= gv_json

IMPORTING abap= ).

MOVE-CORRESPONDING TO gt_data2.

LOOP AT gt_data2INTO gs_data2.

WRITE:/ gs_data2-index,'-',gs_data2-pernr,'-',gs_data2-phone.

ENDLOOP.

ENDFORM.

、、、

华米GTR3pro与T-REX2的评测和购买建议

禽兽田

最近因为b站上铺天盖地的宣传,我同时买了华米的GTR3pro和T-REX2,这两款手表都有着不错的外形,T-REX2比较户外运动,很像我的卡西欧,带上就有种想要出去运动冲动。GTR3pro就比较休闲商务。两款手表的重量都比较轻,带上没有什么严重的坠手感。对ios和android都有非常好的支持,不存在阉割功能的情况,都有着非常不错的续航(跟apple watch的一天一充相比)这点好评。

但是相较于两个表同时得益于系统和重量的优点,这两款表的区别让我有点不解:

T-REX2相较于GTR3pro少了麦克风和扬声器, 所以导致T-REX2不具备直接用手表接听电话的能力,对于我来说骑车的时候来电话用有这个功能的apple watch不用摸出手机直接接电话,不管是安全还是便捷都是十分必要的。

GTR3pro有着T-REX2相当于95%(我其实没找到那5%的区别,为了严谨点哈哈)的户外运动功能,同时具备双星gps,轨迹到处,气压高度计和所有的运动检测,血氧,心率,睡眠等。

GTR3pro有T-REX2没有温度计,这点我不是很明白为什么TREX2没有,难道户外运动对温度没有检测的要求?

GTR3pro还可以血压检测,虽然还在测试阶段,并且不能作为医学用途,但是有就是比没有好。

GTR3因为可以独立播放音乐,内置的储存有2个多g,但是T-REX2只有可怜的400m左右,不知道只是不是TREX2有点点卡顿的原因。

T-REX2比GTR3pro的电池大了50mAh。我之前在想是不是因为电池的增大导致放不下温度传感器,扬声器和麦克风,但是看了眼更大更厚更重的T-REX2,我觉得我想多了。

现在的价格GTR3pro比T-REX2便宜400。

所以综上所述,假如各位最近也比较关注这两款手表并且有购买的打算的话,我的建议是:假如你不是很在乎外表的话,我更推荐GTR3pro,毕竟量大还便宜。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/7973503.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存