zoukankan      html  css  js  c++  java
  • C# Json解析Json = "{"EX_RETURN":[{"MATNR":"test"}] }";

    string jtext = "{"jiangsu":[{"wuxi":"无锡"},{"suzhou":"苏州"},{"nanjing":"南京"}] }";

    //解析Json对象
    JObject a = (JObject)JsonConvert.DeserializeObject(jtext);
    string a1 = a["jiangsu"][2]["nanjing"].ToString();
    //对Json数据进行解析
    Console.WriteLine(a1);
    Console.ReadLine();

    //解析Json数组
    string a4 = a["jiangsu"].ToString();
    //从Json数据中取一个数组出来
    JArray a2 = (JArray)JsonConvert.DeserializeObject(a4);
    string a3 = a2[2]["nanjing"].ToString();
    //对Json数据进行解
    Console.WriteLine(a3);
    Console.ReadLine();
    ---------------------
    案例H3BPM主数据同步:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Security.Cryptography;
    using System.Text;
    using System.Web;
    using System.Web.Services;
    using System.Xml;
    using Newtonsoft.Json;
    using OThinker.H3.BizBus.BizService;
    using OThinker.H3;
    using OThinker.H3.Data;
    using OThinker.H3.WorkSheet;
    using System.Collections;
    using System.Reflection;
    using System.Web.Script.Serialization;
    using Newtonsoft.Json.Linq;
    using log4net;

    namespace OThinker.H3.Portal
    {
    /// <summary>
    /// MaterialMasterDataSynchro 的摘要说明
    /// </summary>
    /// <summary>
    /// BPMFsscWebService 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
    // [System.Web.Script.Services.ScriptService]
    public class MaterialMasterDataSynchro : IBaseJob
    {
    public MaterialMasterDataSynchro()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    private readonly ILog _logger = LogManager.GetLogger(typeof(JobSyncSapSupplier));

    public override void JobMethod(ZD_SyncTaskConfig plan)
    {
    GetMaterialInfo(plan.SyncSuccessBeginTime.ToString("yyyy.MM.dd"));
    }

    [WebMethod]
    public string HelloWorld()
    {
    return "Hello World";
    }
    private IEngine _Engine = null;
    /// <summary>
    /// 流程引擎的接口,该接口会比this.Engine的方式更快,因为其中使用了缓存
    /// </summary>
    public IEngine Engine
    {
    get
    {
    if (OThinker.H3.WorkSheet.AppConfig.ConnectionMode == ConnectionStringParser.ConnectionMode.Mono)
    {
    return OThinker.H3.WorkSheet.AppUtility.Engine;
    }
    return _Engine;
    }
    set
    {
    _Engine = value;
    }
    }


    public string AdminId
    {
    get
    {
    return OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetUnitByCode("Administrator").ObjectID;
    }
    }
    ReturnResult result;

    /// <summary>
    /// SAP获得物料主数据信息
    /// string Json = "{"EX_RETURN":[{"MATNR":"test"}] }";
    /// </summary>
    [WebMethod(Description = "获取SAP物料主数据信息")]
    public string GetMaterialInfo(string lastSuccessDate)
    {

    DataTable dataTable = new DataTable(); //实例化
    string Json = string.Empty;
    try
    {
    Dictionary<string, object> dic = new Dictionary<string, object>();
    //List<Item> list = new List<Item>();
    //dic.Add("MT_MM_WLZSJ.IM_INPUT", "");
    Json = GetInterfaceDataService.ExecuteBizNonQueryToJson("MaterialMasterDataInterface", "SI_MM_WLZSJ_OS", dic);
    JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
    javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
    JObject jObject = (JObject)JsonConvert.DeserializeObject(Json); //此处放json数据
    string ex_return = jObject["EX_RETURN"].ToString();
    ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(ex_return);
    foreach (Dictionary<string, object> dictionary in arrayList)
    {
    if (dataTable.Columns.Count == 0)
    {
    foreach (string current in dictionary.Keys)
    {
    dataTable.Columns.Add(current, dictionary[current].GetType());
    }
    }
    DataRow dataRow = dataTable.NewRow();
    foreach (string current in dictionary.Keys)
    {
    dataRow[current] = dictionary[current];
    }
    dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
    }
    }
    catch (Exception ex)
    {
    result = new ReturnResult(false, "SAP主数据增量同步失败!" + ex);
    }
    if (dataTable.Rows.Count > 0)
    {
    StringBuilder sb = new StringBuilder();
    string sql = string.Format(@"select * from Tab_SAPMaterialMasterData");
    DataTable SelectDt = AppUtility.Engine.Query.QueryTable(sql);
    if (SelectDt.Rows.Count > 0)
    {
    string DeleteSql = string.Format(@"delete from Tab_SAPMaterialMasterData");
    DataTable DeleteDt = AppUtility.Engine.Query.QueryTable(DeleteSql);
    }
    for (int j = 0; j < dataTable.Rows.Count; j++)
    {
    string InsertSql = string.Format(@"INSERT Tab_SAPMaterialMasterData(MATNR,MAKTX,BWKEY,VPRSV,BKLAS,MTART,MEINS,MATKL,BESKZ)
    VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')",
    dataTable.Rows[j]["MATNR"].ToString(),
    dataTable.Rows[j]["MAKTX"].ToString(),
    dataTable.Rows[j]["BWKEY"].ToString(),
    dataTable.Rows[j]["VPRSV"].ToString(),
    dataTable.Rows[j]["BKLAS"].ToString(),
    dataTable.Rows[j]["MTART"].ToString(),
    dataTable.Rows[j]["MEINS"].ToString(),
    dataTable.Rows[j]["MATKL"].ToString(),
    dataTable.Rows[j]["BESKZ"].ToString());
    sb.Append(InsertSql);
    }
    OThinker.H3.WorkSheet.AppUtility.Engine.Query.CommandFactory.CreateCommand().ExecuteNonQuery(sb.ToString());
    result = new ReturnResult(true, "SAP主数据增量同步成功!");
    }
    else
    {
    result = new ReturnResult(false, "SAP主数据增量同步失败!");
    }

    return result.ToString();
    }
    public class Item
    {
    public string WERKS { get; set; }
    }
    /// <summary>
    /// 将泛型集合类转换成DataTable
    /// </summary>
    /// <typeparam name="T">集合项类型</typeparam>
    /// <param name="list">集合</param>
    /// <param name="propertyName">需要返回的列的列名</param>
    public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName)
    {
    List<string> propertyNameList = new List<string>();
    if (propertyName != null)
    propertyNameList.AddRange(propertyName);

    DataTable result = new DataTable();
    if (list.Count > 0)
    {
    PropertyInfo[] propertys = list[0].GetType().GetProperties();
    foreach (PropertyInfo pi in propertys)
    {
    if (propertyNameList.Count == 0)
    {
    result.Columns.Add(pi.Name, pi.PropertyType);
    }
    else
    {
    if (propertyNameList.Contains(pi.Name))
    result.Columns.Add(pi.Name, pi.PropertyType);
    }
    }

    for (int i = 0; i < list.Count; i++)
    {
    ArrayList tempList = new ArrayList();
    foreach (PropertyInfo pi in propertys)
    {
    if (propertyNameList.Count == 0)
    {
    object obj = pi.GetValue(list[i], null);
    tempList.Add(obj);
    }
    else
    {
    if (propertyNameList.Contains(pi.Name))
    {
    object obj = pi.GetValue(list[i], null);
    tempList.Add(obj);
    }
    }
    }
    object[] array = tempList.ToArray();
    result.LoadDataRow(array, true);
    }
    }
    return result;
    }

    public class ReturnResult
    {
    /// <summary>
    /// 消息类构造函数
    /// </summary>
    /// <param name="success"></param>
    /// <param name="message"></param>
    public ReturnResult(bool success, string message, string instanceId)
    {
    this.Success = success;
    this.Message = message;
    }

    /// <summary>
    /// 消息类构造函数
    /// </summary>
    /// <param name="success"></param>
    /// <param name="message"></param>
    public ReturnResult(bool success, string message)
    : this(success, message, string.Empty)
    {

    }

    public ReturnResult() { }

    private bool success = false;
    /// <summary>
    /// 是否成功
    /// </summary>
    public bool Success
    {
    get { return success; }
    set { success = value; }
    }
    private string message = string.Empty;
    /// <summary>
    /// 获取或设置系统返回消息
    /// </summary>
    public string Message
    {
    get { return message; }
    set { this.message = value; }
    }
    }
    }
    }

  • 相关阅读:
    Git命令branch-分支
    Git基础命令(二)
    Git基础命令(一)
    【转载】Android状态栏微技巧,带你真正理解沉浸式模式
    Android性能分析工具
    【转载】Android卡顿检测方案
    WebView loadData中文乱码
    【Cocos2dx】新建场景、场景的切换、设置启动场景与菜单的新建
    Cocos2d-JS切换场景与切换特效
    COCOS2DX场景切换特效
  • 原文地址:https://www.cnblogs.com/LuZhiYou1994/p/9814985.html
Copyright © 2011-2022 走看看