java复杂对象转json字符串_复杂json字符串转换成通用Json对象

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Net;usingSystem.Net.Http;usingSystem.Web.Http;usingNewtonsoft.Json;usingNewtonsoft.Json.Linq;namespaceTransfer.Controllers

{public classTransferController : ApiController

{

[HttpPost]publicHttpResponseMessage Transfer(HttpRequestMessage request)

{string postStr =request.Content.ReadAsStringAsync().Result;

ApiParam param= JsonConvert.DeserializeObject(postStr);string json= "{\"success\":false,\"errorCode\":\"500\",\"errorMessage\":\"参数有误\"}";if (param.Uri == "")

{return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };

}

json=TransferManager.Instance.TrasferRequest(param);try{

JObject jobj= JsonConvert.DeserializeObject(json);//把上面的json字符串初步转换为 Jobject对象//Newtonsoft.Json.Linq.JObject jobj = obj as Newtonsoft.Json.Linq.JObject;//把上面的obj转换为 Jobject对象//进一步深度解析复杂json字符串为json通用对象

jobj =ExtractObj(jobj);returnRequest.CreateResponse(HttpStatusCode.OK, jobj);

}catch(Exception ex)

{json= "{\"success\":false,\"errorCode\":\"500\",\"errorMessage\":\"请求接口失败:" + json + "\"}";

Object obj=JsonConvert.DeserializeObject(json);

Newtonsoft.Json.Linq.JObject jobj= obj as Newtonsoft.Json.Linq.JObject;//把上面的obj转换为 Jobject对象

returnRequest.CreateResponse(HttpStatusCode.OK, jobj);

}//return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"),StatusCode= HttpStatusCode.OK };

}///

///深度解析复杂json字符串为json通用对象///

///

///

public staticJObject ExtractObj(JObject job)

{foreach (var item injob)

{try{//得到键当前值

string itemStr =item.Value.ToString();if(itemStr.StartsWith("["))

{//数组只能用数组的转换对象进行转换

JArray itemJArrObj= JsonConvert.DeserializeObject(itemStr);//递归调用

JArray rArrobj =ExtractArrObj(itemJArrObj);//为当前键更新为对象值

job[item.Key] =rArrobj;

}else{//尝试转化为对象(可能失败)

JObject itemJObj = JsonConvert.DeserializeObject(itemStr);//递归调用

JObject robj =ExtractObj(itemJObj);//为当前键更新为对象值

job[item.Key] =robj;

}

}catch{

}

}returnjob;

}//针对json中的数组进行处理

public staticJArray ExtractArrObj(JArray jarr)

{foreach(var item injarr)

{//得到当前值

string itemStr =item.ToString();//尝试转化为对象(可能失败)

JObject itemJObj = JsonConvert.DeserializeObject(itemStr);//递归调用

JObject robj =ExtractObj(itemJObj);

}returnjarr;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值