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; }
}
}
}
}

C# Json解析Json = "{\"EX_RETURN\":[{\"MATNR\":\"test\"}] }";的更多相关文章

  1. json解析json字符串时候,数组必须对应jsonObjectArray,不能对应JsonObject。否则会解析错误。

    json第三方解析json字符串时候,json数组必须对应jsonObjectArray,不能对应JsonObject.->只要是[]开头的都是json数组字符串,就要用jsonArray解析 ...

  2. Json转model对象,model转json,解析json字符串

    GitHub链接: https://github.com/mozhenhau/D3Json D3Json 通过swift的反射特性,把json数据转换为model对象,本类最主要是解决了其他一般jso ...

  3. 认识Json解析json生成json

    .markdown-body hr::after,.markdown-body::after { clear: both } .loopLine,.messageLine0 { } .markdown ...

  4. c# 使用Newtonsoft.Json解析JSON数组

    一.获取JSon中某个项的值 要解析格式: [{"VBELN":"10","POSNR":"10","RET_ ...

  5. Newtonsoft.Json解析Json字符串案例:

    /// <summary> /// 上行jsom格式日志记录 /// </summary> /// <param name="responseJson" ...

  6. Newtonsoft.Json解析json字符串和写json字符串

    写: StringWriter sw = new StringWriter(); JsonWriter writer = new JsonWriter(sw); //如果报错则使用JsonWriter ...

  7. C# Newtonsoft.Json解析json字符串处理 - JToken 用法

    //*调用服务器API(获取可以处理的文件) //1.使用JSON通信协议(调用[待化验任务API]) String retData = null; { JToken json = JToken.Pa ...

  8. C# Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)

    需求: 假设有如下json字符串: { ", "employees": [ { "firstName": "Bill", &quo ...

  9. Json 解析Json

    1.把LitJson导入到项目里面; 2.建一个下面的脚本,不挂在游戏对象上; 3.新建下面一个脚本,挂在相机上. using System.Collections; using System.Col ...

随机推荐

  1. BigDecimal类型转换

    djjfbr.setMoney(new BigDecimal(djjfbillrecord.getMoney()));

  2. 关于python3.6上传文件时报错:HTTPSConnectionPool(host='***.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAIL解决办法

    第一个报错: 最近在练习post请求中上传文件时遇到了一个奇葩事情,两台电脑上写了一模一样的代码,一个运行正常,另一个一片红. 最后了解了一下原因以及解决办法.先记录下关键代码: files = {& ...

  3. chattr和lsattr的基本用法

    lsattr filename  查看一个文件的属性 chattr filename  改变一个文件的属性 主要用途:实现文件的原有内容不允许改变,但可以增加新行,则需通过改变文件的属性来实现. ch ...

  4. blur和click事件冲突

    一.问题描述文本框的blur事件和div元素的click事件出现冲突.在input的blur事件中,我们隐藏div元素.在div的click事件中,我们清除input的内容,并隐藏自身.当我们在inp ...

  5. VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时

    之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...

  6. php实现多进程和关闭进程

    一.php实现多进程 PHP有个pcntl_fork的函数可以实现多进程,但要加载pcntl拓展,而且只有在linux下才能编译这个拓展. 先代码: <?php$arr = ['30000000 ...

  7. IE下CSS3伪类的支持

    当css3.0出现以后,着实让我兴奋了好久,因为出现了很多选择器,我们在也不用靠js做复杂判断了.比如:nth-child,很容易就可以判断奇偶对象 “:nth-child(2n)和:nth-chil ...

  8. __x__(17)0906第三天__块元素block_内联元素inline_行内块元素inline-block

    1. 块元素block 独占一行的元素 一般使用块元素包含内联元素,用作页面布局 <a> 标签可以包含任何除了a标签以外的元素 <p> 标签不能包含块元素 h1... ...h ...

  9. VS2015中使用报表控件(ReportViewer)的方法

    没有报表,一般默认安装之后会出现这种情况,在安装的时候选择自定义安装,把Microsoft Office 开发人员工具.Microsoft SQL Server Data Tools勾选上,安装之后就 ...

  10. SQL 序列-DML-DML-数据类型-用户管理、权限-事务-视图

    --DML--insert关键字--作用:往表中插入一条(多条)记录 --元祖(tuple)值式的插入(一次插入一条记录)--语法1:insert into tablename(column1,col ...