首页 > 其他分享 >D365: 将多个关联的表数据转换为JSON格式

D365: 将多个关联的表数据转换为JSON格式

时间:2023-06-25 17:24:41浏览次数:40  
标签:jsonWriter 0.0 Amount D365 JSON Bracket 格式 AccountNum

最近碰到一个需求,将D365系统中的多个关联表的数据转换成JSON格式导出然后上传到blob storage,实现方式记录一下,以便将来使用

首先在调用是引用using Newtonsoft.Json,using System.IO

引用后,我们用到两个class

System.IO.StringWriter
Newtonsoft.Json.JsonTextWriter

分别定义这两个class的变量,然后进行实例化

stringWriter = new System.IO.StringWriter();
jsonWriter = new Newtonsoft.Json.JsonTextWriter(stringWriter);

开始构建JSON,这里主要介绍构建JSON用到的方法

jsonWriter.WriteStartObject(); -->定义开始大括号"{"

jsonWriter.writeEndObject();   -->定义结束大括号"}"

jsonWriter.WritePropertyName("JSON"); -->定义属性名称,

例如 "JSON": {"OrderAccount": "M-CUA-DEALER"}

jsonWriter.WriteStartArray(); -->定义开始中括号"["

jsonWriter.WriteEndArray();   -->定义结束中括号"]"

代码示例

public void createJson_Statement()
    {
        CustTrans       custTrans;
        ;

        //CustTable
        jsonWriter.WritePropertyName(new DictTable(custTable.TableId).name());
        jsonWriter.WriteStartObject();
        this.writeBodyObject(custTable, NSRPlanetPressDocumentType::Statement);
        
        //CustTrans
        jsonWriter.WritePropertyName(new DictTable(custTrans.TableId).name());
        jsonWriter.WriteStartArray();
        while select custTrans
            where custTrans.AccountNum == custTable.AccountNum
        {
            jsonWriter.WriteStartObject();
            this.writeBodyObject(custTrans, NSRPlanetPressDocumentType::Statement);
            jsonWriter.WriteEndObject();
        }
        jsonWriter.WriteEndArray();

        //Bracket
        jsonWriter.WritePropertyName(#Bracket);
        jsonWriter.WriteStartArray();
        this.writeBracketBody();
        jsonWriter.WriteEndArray();
        jsonWriter.WriteEndObject();
        
    }

输出效果

{
  "DocumentType": "Invoice",
  "DocumentSubType": "",
  "VersionNumber": "1.5",
  "DistributionMethod": {
    "Method": "Post",
    "Value": ""
  },
  "CustTable": {
    "PaymTermId": "AR14",
    "LineDisc": "",
    "TaxWithholdGroup_TH": "",
    "PartyCountry": "",
    "AccountNum": "M-CUA-TEN118SL",
    "CustTrans": [
      {
        "PostingProfileClose": "",
        "AccountingEvent": "0",
        "AccountNum": "M-CUA-TEN118SL",
        "AmountCur": "184.06",
        "AmountMST": "184.06",
      },
      {
        "PostingProfileClose": "",
        "AccountingEvent": "0",
        "AccountNum": "M-CUA-TEN118SL",
        "AmountCur": "353.71",
        "AmountMST": "353.71",
      },
      {
        "PostingProfileClose": "",
        "AccountingEvent": "0",
        "AccountNum": "M-CUA-TEN118SL",
        "AmountCur": "728.89",
        "AmountMST": "728.89",
      }
    ],
    "Bracket": [
      {
        "Bracket": "< 0",
        "Amount": 4052.04
      },
      {
        "Bracket": "0 - 30",
        "Amount": 0.0
      },
      {
        "Bracket": "30 - 60",
        "Amount": 0.0
      },
      {
        "Bracket": "60 - 90",
        "Amount": 0.0
      },
      {
        "Bracket": "90 - 120",
        "Amount": 0.0
      },
      {
        "Bracket": "120 - 150",
        "Amount": 0.0
      },
      {
        "Bracket": "> 150",
        "Amount": 0.0
      }
    ]
  }
}

 

标签:jsonWriter,0.0,Amount,D365,JSON,Bracket,格式,AccountNum
From: https://www.cnblogs.com/dingkui/p/17503437.html

相关文章

  • 格式化字符串输出
    在对字符串格式化进行输出时,最常见的方法就是使用%格式化字符串。这种方法虽然用法简单,但是在遇到需要有多个参数传入时就显得有些麻烦。其实还有以下几种格式化输出字符串的方法。str.format()str.format()对比之前最常用的方法,相当于用{}和:代替了%。str.format()在使用的时......
  • json相关
    java对象转成json成立的基本条件只需要有get方法publicclassResultView<DATA>{publiclonggetTimestamp(){returnSystem.currentTimeMillis();}publicStringgetHostname(){returnHostInfo.getHostName();}}则ObjectMapperUtils.toJSON(resultView)的......
  • 基于uni-app+vue3渲染markdown格式|uniapp软键盘顶起问题解决方案
    前些时候有给大家分享一篇uni-app+vite4+uview-plus搭建跨端项目。今天主要分享下在uniapp中渲染markdown语法及uniapp中软键盘弹起,页面tabbar或顶部自定义navbar导航栏被撑起挤压的问题。如上图:支持h5+小程序+App端markdown解析渲染。上面则是演示了在App端+小程序端键盘弹......
  • Python json和pickle模块
    json和pickle模块用于序列化的两个模块序列化模块:json和picklejson,用于字符串和python数据类型间进行转换pickle,用于python特有的类型和python的数据类型间进行转换Json模块提供了四个功能:dumps、dump、loads、loadpickle模块提供了四个功能:dumps、dump、loads、......
  • HTML------常见的几种图片格式(GIF、PNG、JPG)讲解
    (1)GIF格式GIF格式最突出的特点是支持动画同时GIF是一种无损的图像格式,即修改图片之后,图片质量没有损失。GIF支持透明效果但只能处理256中颜色。因此在网页制作中,GIF格式常用于Logo、小图标和其他色彩相对单一的图像。(2)PNG格式 PNG包括PNG-8和真色彩(PNG-24和PNG-32)。相......
  • 基于 JSON 的 DSL 查询 - 实现步骤【ElasticSearch】
    ESDSL查询实现//todo2.准备Request-搜索哪个索引库SearchRequestsearchRequest=newSearchRequest("hotel");//todo4.所有的搜索条件封装对象searchSourceBuilderSearchSourceBuildersearchSourceBuilder=newSearchSourceBuild......
  • HTTP-响应数据格式
        ......
  • python批量调整docx段落格式
    平时使用WechatDownload保存了很多技术文章,格式比较乱。比如很多空白行、英文乱码、页面左右缩进太多等问题,今天一并解决一下安装python-docxfromdocximportDocumentfromdocx.sharedimportCmimportosrootdir=r'E:\vxWEB\GIS'forfilesinos.listdir(rootdir):......
  • HTML-----------HTML基本格式
    1、<!DOCTYPE><!DOCTYPE>位于文档的最前面,用于向浏览器说明当前文档使用那种HTML或XHTML标准规范。只有在开头处使用<!DOCTYPE>声明,浏览器才能将该文档作为有效的HTML文档,并按指定的文档类型进行解析。2、<html><html>位于<!DOCTYPE>之后,也被称为跟标签。跟标签主要用......
  • 遍历Json
    privatevoidSetShpFcSaveC5s(ShpFcSavemodel){if(string.IsNullOrWhiteSpace(model.C5)==false){JsonDocumentdocument=JsonDocument.Parse(model.C5);foreach(JsonElementjsonElementindocument.RootElement.EnumerateArray())......