当前位置: 首页 > 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.dnsts.com.cn/news/210822.html

相关文章:

  • 专做ppt的网站寻找网站制作公司
  • 6免费建站的网站上海网页制作多少钱
  • 个人直播网站怎么做wordpress博客管理
  • 好看简单易做的网站番禺做网站最便宜的哪家公司
  • 企业网站建设内存wordpress菜单排序
  • 阿里巴巴国际站入驻wordpress存放的目录在
  • 智能网站建设系统如何开发一个安卓app
  • 做一个国外的网站平潭县机场建设网站
  • 世界上做的最好的前端网站企业营销型网站案例
  • 美食网站建设多少钱网站seo设计
  • 诸暨制作网站的公司有哪些wordpress 中文数据
  • 太原建站模板源码网址的英文
  • 网站建设 要维护么怎么做网站结构拓扑图
  • 做视频的软件模板下载网站有哪些内容惠州微网站建设
  • 用流媒体做的电台网站网站开发游戏
  • 天津外贸公司网站制作网页设计表单注册代码
  • 上海网站建设 网页做网络服务提供商是指
  • 网站上名片如何做杭州最好的工业设计公司
  • 求个a站灵璧有做公司网站的吗
  • 内外网网站栏目建设方案仙游县网站建设
  • 网站说建设中项目建设目标
  • wordpress发邮件收到不到邮件青岛网站优化
  • 宝坻做网站哪家好盐城网站建设制作方案
  • 网上做问卷调查赚钱哪些网站好网站建站流程
  • 公司网站维护建设的通知保定网站建设制作
  • 个人网站备案 费用北京小型网站建设
  • 建设厅网站初始数据入库好域名做网站
  • 别人是怎么建设网站的彩票网站的表格是如何做的
  • 互联网博客网站汕头网站搜索优化
  • 网站后台怎么给图片做水印品牌设计方案