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

关于接口JSON格式(DataTable转换成JSON数据)

   #region 工单表关联串JSON数据
/// <summary>
/// 主子档串JSON数据
/// </summary>
/// <param name="jsonName">docType的名字</param>
/// <param name="dt">工单的数据集DataTable</param>
/// <param name="strSubSql">子档的SQL语句,如果没有条件必须加WHERE 1=1 </param>
/// <param name="strMasterGkey">子档在JSON 中的标题名称,即子档“["符号前的名称</param>
/// <param name="strSubGkeys">子档与主档相关联的字段名 格式:子档的字段名#主档的字段名 eg:"erp_mo#erp_mo</param>
///   <param name="strStoreSql">子档中取得仓位的SQL语句</param>
///  <param name="strStoreRef">仓位的节点名</param>
/// <param name="UpdateType"></param>
/// <returns></returns>
public string WoGetJsonReturn(string jsonName, string UpdateType, DataTable dt, string strSubSql, string strSubTableName, string strStoreSql, string strStoreRef, string[] strSubGkeys)
{
StringBuilder Json = new StringBuilder();
Json.Append("{");
Json.Append("\"docType\": \"" + jsonName + "\",");
Json.Append("\"updateType\": \"" + UpdateType + "\",");
if (dt.Rows.Count > 0)
{
Json.Append("\"data\": [");
for (int i = 0; i < dt.Rows.Count; i++)
{
Json.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
// Json.Append(dt.Columns[j].ColumnName.ToString() + ":\"" + dt.Rows[i][j].ToString() + "\"");
Type dataType = dt.Columns[dt.Columns[j].ColumnName.ToString()].DataType;
if (dataType.Name == "Decimal" || dataType.Name == "Int32")
//  Json.Append("\"" + dt.Columns[j].ColumnName.ToString().ToLower() + "\":" + dt.Rows[i][j].ToString().Replace(@"\", "\\\\").Replace("\"", "\\\"").Trim());
Json.Append("\"" + dt.Columns[j].ColumnName.ToString().ToLower() + "\":" + dt.Rows[i][j].ToString().Replace(@"\", "\\\\").Replace("\"", "\\\"").Replace("\n", "").Replace("\t", "").Replace("\r", "").Trim());
else
Json.Append("\"" + dt.Columns[j].ColumnName.ToString().ToLower() + "\":\"" + dt.Rows[i][j].ToString().Replace(@"\", "\\\\").Replace("\"", "\\\"").Replace("\n", "").Replace("\t", "").Replace("\r", "").Trim() + "\"");
if (j < dt.Columns.Count - 1)
{
Json.Append(",");
}
}

                    if (strSubSql != "")
{
string strSearchSql = strSubSql;
if (strSubGkeys.Length > 0)
{

                            for (int m = 0; m < strSubGkeys.Length; m++)
{
strSearchSql += " AND " + strSubGkeys[m].Split('#')[0] + "='" + dt.Rows[i][strSubGkeys[m].Split('#')[1]].ToString() + "'";
}
}
DataTable dtSub = SqlDBOps.SqlDBOps.ExecuteReader(strSearchSql, "ERP_ACC");
if (dtSub != null)
{
if (dtSub.Rows.Count > 0)
{
//dtSub = MergeDataTableRow(dtSub);
Json.Append(",");
Json.Append("\"" + strSubTableName + "\": [");

                                for (int t = 0; t < dtSub.Rows.Count; t++)
{
Json.Append("{");
for (int k = 0; k < dtSub.Columns.Count; k++)
{
Type dataTypeSub = dtSub.Columns[dtSub.Columns[k].ColumnName.ToString()].DataType;
if (dataTypeSub.Name == "Decimal" || dataTypeSub.Name == "Int32")
// Json.Append("\"" + dtSub.Columns[k].ColumnName.ToString() + "\":" + dtSub.Rows[t][k].ToString().Replace(@"\", "\\\\").Replace("\"", "\\\"").Trim());
Json.Append("\"" + dtSub.Columns[k].ColumnName.ToString() + "\":" + dtSub.Rows[t][k].ToString().Replace(@"\", "\\\\").Replace("\"", "\\\"").Replace("\n", "").Replace("\t", "").Replace("\r", "").Trim());
else
Json.Append("\"" + dtSub.Columns[k].ColumnName.ToString().ToLower() + "\":\"" + dtSub.Rows[t][k].ToString().Replace(@"\", "\\\\").Replace("\"", "\\\"").Replace("\n", "").Replace("\t", "").Replace("\r", "").Trim() + "\"");
if (k < dtSub.Columns.Count - 1)
{
Json.Append(",");
}
}
Json.Append("}");
if (t < dtSub.Rows.Count - 1)
{
Json.Append(",");
}

                                }
Json.Append("]");
}
}
}

                    if (strStoreSql != "")
{
string strGetStoreSql = strStoreSql;
if (strSubGkeys.Length > 0)
{

                            for (int m = 0; m < strSubGkeys.Length; m++)
{
strGetStoreSql += " AND " + strSubGkeys[m].Split('#')[0] + "='" + dt.Rows[i][strSubGkeys[m].Split('#')[1]].ToString() + "'";
}
}
//1.根据Order_No、Client_Code 两个字段去重,distinct之后的table只保留括号内写的字段
//DataTable DtHeadDis = DtEntities.DefaultView.ToTable(true, "Order_No", "Client_Code")
DataTable dtStore = SqlDBOps.SqlDBOps.ExecuteReader(strGetStoreSql, "ERP_ACC");
if (dtStore != null)
{
if (dtStore.Rows.Count > 0)
{

                                Json.Append(",");
Json.Append("\"" + strStoreRef + "\": [");

                                for (int t = 0; t < dtStore.Rows.Count; t++)
{
Json.Append("{");
for (int k = 0; k < dtStore.Columns.Count; k++)
{
Type dataTypeStore = dtStore.Columns[dtStore.Columns[k].ColumnName.ToString()].DataType;
if (dataTypeStore.Name == "Decimal" || dataTypeStore.Name == "Int32")
Json.Append("\"" + dtStore.Columns[k].ColumnName.ToString() + "\":" + dtStore.Rows[t][k].ToString().Replace(@"\", "\\\\").Replace("\"", "\\\"").Trim());
else
Json.Append("\"" + dtStore.Columns[k].ColumnName.ToString().ToLower() + "\":\"" + dtStore.Rows[t][k].ToString() + "\"");
if (k < dtStore.Columns.Count - 1)
{
Json.Append(",");
}
}
Json.Append("}");
if (t < dtStore.Rows.Count - 1)
{
Json.Append(",");
}

                                }
Json.Append("]");
}
}
}
Json.Append("}");
if (i < dt.Rows.Count - 1)
{
Json.Append(",");
}

                }
Json.Append("]");
}
Json.Append("}");
return Json.ToString();
}
#endregion
------------------------------------------------------------------------

 string strMsgJson = WoGetJsonReturn("BS_WPLAN", "UPDATE", dt, "SELECT   MTRL_CODE,DOSAGE,NN_QTY,TN_QTY,NN_QTY_S,TN_QTY_S,IS_MAIN,MAIN_CODE, POINT_STR,'' REMARK  from apps.pcp_jobno_view1 where 1=1  ", "bs_wplan_mn_mtrl", strThirdSql, "bs_mn_store", strSubGkeys);

JSON格式:

{"docType":"BS_WPLAN","updateType":"UPDATE","data": [{"erp_mo":"5340XXX","prod_code":"283-XXXX-0000B","p_qty":70,"pb_date":"2025-09-21 00:00:00","pe_date":"2025-09-21 00:00:00","mo_type":0,"phase_code":"SMT","erp_org_id":45,"is_bonded":"N","org_id":"MU1","first_bom_side":"2","ord_code":".","po_code":"2200005398","cust_code":"","remark258":",","bs_wplan_mn_mtrl":[{"mtrl_code":"262-XX062-9799F","DOSAGE":89,"NN_QTY":69420,"TN_QTY":69420,"NN_QTY_S":69420,"TN_QTY_S":69420,"is_main":"Y","main_code":"262-XX062-9799F","point_str":"C12,C2604","remark":""},{"mtrl_code":"163-XX009-0289F","DOSAGE":4,"NN_QTY":3120,"TN_QTY":3120,"NN_QTY_S":3120,"TN_QTY_S":3120,"is_main":"Y","main_code":"163-XX009-0289F","point_str":"R3603,R8410","remark":""},{"mtrl_code":"162-031XX-0289F","DOSAGE":2,"NN_QTY":1560,"TN_QTY":1560,"NN_QTY_S":1560,"TN_QTY_S":1560,"is_main":"Y","main_code":"162-03XX1-0289F","point_str":"C3600,C3602","remark":""},{"mtrl_code":"163-00102-0299F","DOSAGE":4,"NN_QTY":3120,"TN_QTY":3120,"NN_QTY_S":3120,"TN_QTY_S":3120,"is_main":"Y","main_code":"163-0XX02-0299F","point_str":"R90,R1207","remark":""},{"mtrl_code":"163-00103-0299F","DOSAGE":22,"NN_QTY":17160,"TN_QTY":17160,"NN_QTY_S":17160,"TN_QTY_S":17160,"is_main":"Y","main_code":"1XX-00103-0299F","point_str":"R66,R8011","remark":""}],"bs_mn_store": [{"store_code":"AP3102"}]}]}

http://www.dtcms.com/a/416120.html

相关文章:

  • 加减放大电路与仿真
  • 网站建设公司推荐乐云seo小程序商城系统
  • 网站运营岗位职责描述精品课程网站建设毕业设计论文
  • 实战指南:RVC 语音转换框架
  • 卡片式设计 网站网站站长英语
  • 网站开发如何设置视频教程注册一家公司都需要什么费用
  • 奉贤网站制作网站开发面试
  • 网站要怎么做开发公司工程部绩效考核管理办法
  • Linux:gdb的使用
  • 230板子相关接口总结
  • 怎么制作免费建网站做红包网站
  • 网站建设与管理试卷怎么建立织梦网站
  • wordpress 添加视频无锡网站排名优化公司
  • 2025年最新acw_sc__v2加密cookie算法
  • 《普通逻辑》学习记录——类比推理
  • 韩国家具网站模板黄江镇网站建设
  • seo查询站长太原制作网站的公司哪家好
  • 怀来县网站建设自建网站如何上传视频
  • 潮州市建设工程交易中心网站做淘宝客找商品网站有哪些
  • 结构化方法和面向对象方法对比
  • 凡科建站官网免费注册手机app软件开发机构
  • 网站建设功能需求文档网站开发后期做什么
  • 福州如何做百度的网站php做网页
  • 青建设厅官方网站开发小程序需要多少钱难吗
  • 兼职做诚信网站认证那个公司可以做网站
  • 百度为什么不收录网站的某个版块免费网页搭建
  • leetcode 438 找到字符串中所有的字母异位词
  • 田园综合体建设网站seo技术
  • 动态ip可以做网站吗南宁网络广播电视台
  • 东莞企业网站制作出售网站优化费用怎么做会计分录