当前位置: 首页 > news >正文

网站建设公司哪家好?该如何选择工程资质

网站建设公司哪家好?该如何选择,工程资质,建设淘宝网站的目的,关于申请网站建设一、前言 目前项目中很多地方会用到将ABAP的格式转换为JSON或者XML格式#xff0c;下面介绍几种方法#xff1a; 對transformation的方式生成XML文件#xff0c;方法有多種#xff1a; call transformation cl_proxy_xml_transformabap_to_xml_xstring的方式#x…一、前言 目前项目中很多地方会用到将ABAP的格式转换为JSON或者XML格式下面介绍几种方法 對transformation的方式生成XML文件方法有多種 call transformation cl_proxy_xml_transformabap_to_xml_xstring的方式/ui2/cl_jsonCL_TREX_JSON_SERIALIZER与CL_TREX_JSON_DESERIALIZER 二、call transformation DATA: lo_writer TYPE REF TO cl_sxml_string_writer.lo_writer cl_sxml_string_writercreate(type if_sxmlco_xt_xml10encoding UTF-8 ).CALL TRANSFORMATION idSOURCE spfli lt_itabsflight lt_itab2RESULT XML lo_writer.lv_xml lo_writer-get_output( ).CALL FUNCTION SCMS_XSTRING_TO_BINARYEXPORTINGbuffer lv_xmlIMPORTINGoutput_length lv_sizeTABLESbinary_tab lt_xml. 若是需要json格式則可以將type的參數改為IF_SXMLCO_XT_BINARY若目標內表中存在非扁平結構需要在SE11中提前定義好結構若需要像PI結構一樣可以控制initial字段內表在最終的XML或者文件中可見則需要在SE80中定義結構Enterprise Services中定義。 三、cl_proxy_xml_transformabap_to_xml_xstring cl_proxy_xml_transformabap_to_xml_xstring(EXPORTINGabap_data is_itab3ddic_type ZLIAN_TEST_XML Name of Dictionary Type * ext_xml ABAP_FALSE * xml_header no * root_element * svar_name Proxy Generation: Name of an Object in R/3RECEIVINGxml lv_xml ).CATCH cx_proxy_fault. Proxy FaultCATCH cx_transformation_error. General Error When Performing CALL TRANSFORMATION 注若是多層結構兩種方式需要建立的結構不一樣cl_proxy_xml_transformabap_to_xml_xstring不會產生最內層的tablel_line最外層的name也不會產生也不會帶出空字段call transformation則都相反。 四、/ui2/cl_json JSON转 ABAP结构 TYPES: BEGIN OF t_record,key1 TYPE string,key2 TYPE string,END OF t_record.DATA: json TYPE string. DATA: record TYPE t_record.json {key1: VALUE1, key2: VALUE2}./ui2/cl_jsondeserialize( EXPORTING json json CHANGING data record ). IF sy-subrc 0. ENDIF. ABAP结构转JSON json /ui2/cl_jsonserialize( data record compress abap_true pretty_name /ui2/cl_jsonpretty_mode-camel_case ). 当然SAP还是提供了其它类来进行JSON格式的转换。 但是这种JSON的方法出来的名字会直接保存为小写意味着KEY1/KEY2在JSON中永远都是key1/key2 {key1:ValuE1,key2:VALUE2} 怎样才可以做到{KEy1:ValuE1,key2:VALUE2} 这时候需要做到驼峰美化 DATA: BEGIN OF record,_K_EY1 TYPE string VALUE ValuE1,key2 TYPE string VALUE VALUE2,END OF record. DATA: json TYPE string.json /ui2/cl_jsonserialize( data record compress abap_true pretty_name /ui2/cl_jsonpretty_mode-camel_case ). 五、CL_TREX_JSON_SERIALIZER与CL_TREX_JSON_DESERIALIZER CL_TREX_JSON_SERIALIZER 将 ABAP 内表转换为 json 格式CL_TREX_JSON_DESERIALIZERjson 转换为 ABAP 内表 这两个类有一点点问题序列化生成的格式 key 没有引号可能导致外部解析的失败。比如 [{id: 001,name: Stone},{id: 002,name: Brown} ] 而我们需要的是下面的格式 [{id: 001,name: Stone},{id: 002,name: Brown} ] 所以需要对两个类进行改造以符合自己的需求。首先我们使用事务码 SE24 将 CL_TREX_JSON_SERIALIZER 类拷贝一个新类另存为 ZCL_TREX_JSON_SERIALIZER然后将 RECURSE() 方法做两点改变 填加语句 注释掉 CONCATENATE abapcomp-name c_colon INTO l_value 语句改写为下面的语句。就是在 abapcomp-name 两边加上双引号 完整的 RECURSE() 方法代码如下 METHOD recurse.DATA:l_type TYPE c ,l_comps TYPE i ,l_lines TYPE i ,l_index TYPE i ,l_value TYPE string .FIELD-SYMBOLS:itab TYPE ANY TABLE ,comp TYPE ANY .DESCRIBE FIELD data TYPE l_type COMPONENTS l_comps .IF l_type cl_abap_typedescrtypekind_table . * itab - arrayAPPEND [ TO me-fragments .ASSIGN data TO itab .l_lines LINES( itab ) .LOOP AT itab ASSIGNING comp .ADD 1 TO l_index .recurse( comp ) .IF l_index l_lines .APPEND c_comma TO me-fragments .ENDIF .ENDLOOP .APPEND ] TO fragments .ELSE .IF l_comps IS INITIAL . * field - scalar * todo: formatl_value data .REPLACE ALL OCCURRENCES OF \ IN l_value WITH \\ .REPLACE ALL OCCURRENCES OF IN l_value WITH \ .REPLACE ALL OCCURRENCES OF IN l_value WITH \ .REPLACE ALL OCCURRENCES OF IN l_value WITH \ .REPLACE ALL OCCURRENCES OF cl_abap_char_utilitiescr_lf IN l_value WITH \r\n .REPLACE ALL OCCURRENCES OF cl_abap_char_utilitiesnewline IN l_value WITH \n .REPLACE ALL OCCURRENCES OF cl_abap_char_utilitieshorizontal_tab IN l_value WITH \t .REPLACE ALL OCCURRENCES OF cl_abap_char_utilitiesbackspace IN l_value WITH \b .REPLACE ALL OCCURRENCES OF cl_abap_char_utilitiesform_feed IN l_value WITH \f .CONDENSE l_value.CONCATENATE l_value INTO l_value .APPEND l_value TO me-fragments .ELSE . * structure - objectDATA l_typedescr TYPE REF TO cl_abap_structdescr .FIELD-SYMBOLS abapcomp TYPE abap_compdescr .APPEND { TO me-fragments .l_typedescr ? cl_abap_typedescrdescribe_by_data( data ) .LOOP AT l_typedescr-components ASSIGNING abapcomp .l_index sy-tabix . * CONCATENATE abapcomp-name c_colon INTO l_value .CONCATENATE abapcomp-name c_colon INTO l_value.TRANSLATE l_value TO LOWER CASE .APPEND l_value TO me-fragments .ASSIGN COMPONENT abapcomp-name OF STRUCTURE data TO comp .recurse( comp ) .IF l_index l_comps .APPEND c_comma TO me-fragments .ENDIF .ENDLOOP .APPEND } TO me-fragments .ENDIF .ENDIF .ENDMETHOD.相对应地 将 CL_TREX_JSON_DESERIALIZER 拷贝成为 ZCL_TREX_JSON_DESERIALIZER并且对 deserialize_object 方法做两点变更 (网上有一个做好的图片我就直接贴图了) 完成后deserialize_object 方法的完整代码如下 METHOD deserialize_object.DATA:l_node_type TYPE REF TO cl_abap_typedescr ,l_ref TYPE REF TO object .ADD 1 TO offset . skip {l_node_type cl_abap_typedescrdescribe_by_data( node ) .* prepare for dynamic accessCASE l_node_type-kind .WHEN cl_abap_typedescrkind_ref .l_ref node .WHEN cl_abap_typedescrkind_struct .WHEN OTHERS .RAISE EXCEPTION TYPE cx_trex_serialization .ENDCASE .DATA:l_done TYPE abap_bool ,l_len TYPE i ,l_name TYPE string .* handle each componentWHILE l_done abap_false .find next keyFIND REGEX (\w)\s*: IN SECTION OFFSET offset OF jsonMATCH OFFSET offset MATCH LENGTH l_lenSUBMATCHES l_name .IF sy-subrc 0 .RAISE EXCEPTION TYPE cx_trex_serialization .ENDIF .ADD l_len TO offset .FIELD-SYMBOLS comp TYPE ANY .* dynamic binding to componentTRANSLATE l_name TO UPPER CASE .CASE l_node_type-kind .WHEN cl_abap_typedescrkind_ref .ASSIGN l_ref-(l_name) TO comp .WHEN cl_abap_typedescrkind_struct .ASSIGN COMPONENT l_name OF STRUCTURE node TO comp .IF sy-subrc 0.CONTINUE.ENDIF.WHEN OTHERS .RAISE EXCEPTION TYPE cx_trex_serialization .ENDCASE .DATA:l_comp_type TYPE REF TO cl_abap_typedescr ,l_ref_type TYPE REF TO cl_abap_refdescr .* check component typel_comp_type cl_abap_typedescrdescribe_by_data( comp ) .CASE l_comp_type-kind . * create instance if its an orefWHEN cl_abap_typedescrkind_ref .l_ref_type ? l_comp_type .l_comp_type l_ref_type-get_referenced_type( ) .CREATE OBJECT comp TYPE (l_comp_type-absolute_name) .ENDCASE .* deserialize current componentdeserialize_node(EXPORTINGjson jsonCHANGINGoffset offsetnode comp ) .FIND REGEX ,|\} IN SECTION OFFSET offset OF json MATCH OFFSET offset .IF sy-subrc 0 .RAISE EXCEPTION TYPE cx_trex_serialization .ENDIF .IF jsonoffset(1) } .l_done abap_true .ENDIF .ADD 1 TO offset .ENDWHILE .ENDMETHOD.示例 调用 ZCL_TREX_JSON_SERIALIZER 实现序列化以及调用 ZCL_TREX_JSON_DESERIALIZER 实现反序列化的代码如下 REPORT zabap_json .DATA: serializer TYPE REF TO zcl_trex_json_serializer,lv_json TYPE string.DATA: BEGIN OF ls_json,id TYPE string,name TYPE string,END OF ls_json.DATA: lt_json LIKE STANDARD TABLE OF ls_json.CLEAR ls_json. ls_json-id 001. ls_json-name Stone.APPEND ls_json TO lt_json.CLEAR ls_json. ls_json-id 002. ls_json-name Brown.APPEND ls_json TO lt_json.CREATE OBJECT serializerEXPORTING DATA lt_json[]. CALL METHOD serializer-serialize( ). lv_json serializer-get_data( ).WRITE / lv_json.* DeserialzeWRITE /. WRITE: / Deseriaze json string to internal table: .DATA: deserializer TYPE REF TO zcl_trex_json_deserializer. CLEAR lt_json.CREATE OBJECT deserializer. CALL METHOD deserializer-deserialize(EXPORTING json lv_jsonIMPORTING abap lt_json[] ).LOOP AT lt_json INTO ls_json.WRITE : / ls_json-id, ls_json-name. ENDLOOP.
http://www.tj-hxxt.cn/news/134265.html

相关文章:

  • 四川城乡和住房建设厅官方网站后端开发需要掌握哪些知识
  • 黔西县住房和城乡建设局网站留学网站建设方案
  • 怎样申请网站深圳竞价托管公司
  • 网站如何做suwordpress悬浮
  • 静态网站和伪静态seo企业网站前台模板
  • 网站建设高等教育出版社泉州网站建设网站
  • 网站开发设计文员网站微信支付怎么做
  • 策划方案免费网站副业做网站软件
  • 石油网站建设价格网站四对联广告代码
  • 服装网站建设开发语言个人网站做什么内容好
  • 青龙建站教程当下最流行的营销方式
  • 如何做同城信息网站wordpress页面找不到404
  • 英文广告网站模板免费下载360网站seo怎么做
  • 做网站难度漯河百度做网站电话
  • 微服务网站户型图装修设计图app
  • 博客网站登录入口佛山网站代运营
  • 兰州网站备案注册安全工程师职业资格制度规定
  • 厦门做网站的重庆医院门户网站建设
  • 淘客做的领券网站快速提高关键词排名的软件
  • 城乡与住房建设部网站网站做外链的方式
  • 建设部监理网站官网公司建立网站的必要性
  • 网站不备案打不开直播软件哪个好用
  • 中国建设很行河北省分行合作网站成都有啥好玩的地方
  • 西安网站建设咪豆互联网站备案可以更改吗
  • 推荐10个网站网站策划书怎么做的美观
  • d?t网站模版新装本地wordpress超慢
  • 海南论坛论坛网站建设温州公司建设网站
  • 优秀 网站设计 蓝色网站建设主题大全
  • 爱做网站外国做海淘是在哪个网站好
  • 企业如何建自己的网站wordpress菜单右置