s = "{success:true,data:{ id: 100001, bin:\"JIT-3JS-2\",targetBin:\"JIT-3JS-3K\",batchs:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\"},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\"}]}}"; JObject jo = (JObject)JsonConvert.DeserializeObject(s); //MessageBox.Show(jo["success"].ToString()); JToken js = (JToken)jo["data"]; //MessageBox.Show(js["id"].ToString()); //MessageBox.Show(js["bin"].ToString()); //MessageBox.Show(js["targetBin"].ToString()); MessageBox.Show(js["batchs"][0]["code"].ToString()); MessageBox.Show(js["batchs"][0]["name"].ToString()); MessageBox.Show(js["batchs"][1]["code"].ToString()); MessageBox.Show(js["batchs"][1]["name"].ToString()); or s = "{success:true,data:{ id: 100001, bin:\"JIT-3JS-2\",targetBin:\"JIT-3JS-3K\",batchs:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\"},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\"}]}}"; JObject jo = (JObject)JsonConvert.DeserializeObject(s); //MessageBox.Show(jo["success"].ToString()); JToken js = (JToken)jo["data"]; //MessageBox.Show(js["id"].ToString()); //MessageBox.Show(js["bin"].ToString()); //MessageBox.Show(js["targetBin"].ToString()); JArray jar = JArray.Parse(js["batchs"].ToString()); for (var i = 0; i < jar.Count; i++) { JObject j = JObject.Parse(jar[i].ToString()); MessageBox.Show(j["code"].ToString()); MessageBox.Show(j["name"].ToString()); }
我去 这种方式我一编译就报错: 类型“System.ComponentModel.ITypedList”在未被引用的程序集中定义。必须添加对程序集“System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用,我已经引用了 using Newtonsoft.Json.Linq; using Newtonsoft.Json;,他字体都变了绿色了,求解?
下个比Newtonsoft.Json.dll(4.5)低的版本试一下,我用的是4.5版本的
低版本都 没得TObject了
换种方式: s = "{success:true,data:{ id: 100001, bin:\"JIT-3JS-2\",targetBin:\"JIT-3JS-3K\",batchs:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\"},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\"}]}}"; var serializer = new JavaScriptSerializer(); var ret = serializer.Deserialize<dynamic>(s); dynamic value = serializer.DeserializeObject(s); int key1 = value["data"]["id"]; string key2 = value["data"]["bin"]; string key3 = value["data"]["targetBin"]; object[] key4 = value["data"]["batchs"];
求指教 这种行不行:,顺便像如题这种Json是不是标准格式的Json数据啊?
url = "http://localhost:9095/" + url;
string html = "";
WebRequest request;
Encoding encoding = Encoding.GetEncoding("gb2312");
request = WebRequest.Create(url);
request.Credentials = CredentialCache.DefaultCredentials;
request.Timeout = 20000;
WebResponse response;
response = request.GetResponse();
html = new StreamReader(response.GetResponseStream(), encoding).ReadToEnd();
return html;
private string Getjson()
{
string getWeatherUrl = "http://localhost:9095/pda/justifyBin/startup.do?j_passport=892";
WebRequest webReq = WebRequest.Create(getWeatherUrl);
WebResponse webResp = webReq.GetResponse();
Stream stream = webResp.GetResponseStream();
StreamReader sr = new StreamReader(stream, Encoding.UTF8);
string html = sr.ReadToEnd();
sr.Close();
stream.Close();
return html;
}
string s = Getjson();
JObject jo = (JObject)JsonConvert.DeserializeObject(s);
MessageBox.Show(jo["success"].ToString());
JToken js = (JToken)jo["data"];
MessageBox.Show(js["id"].ToString());
MessageBox.Show(js["bin"].ToString());
MessageBox.Show(js["targetBin"].ToString());
MessageBox.Show(js["batchs"][0].ToString());
MessageBox.Show(js["batchs"][1].ToString());
如果 batchs 里面是batchs :[{code:” “JTL-Z38001”,name:” 奥迪三轮毂“},{ code:” JTL-Z38002”,name:” 奥迪三轮毂}]} 那这样我该如何定义呢?
JArray jar = JArray.Parse(js["batchs "].ToString());
for (var i = 0; i < jar.Count; i++)
{
JObject j = JObject.Parse(jar[i].ToString());
MessageBox.Show(j["code"].ToString());
MessageBox.Show(j["name"].ToString());
}
如果 batchs 里面是batchs :[{code:” “JTL-Z38001”,name:” 奥迪三轮毂“},{ code:” JTL-Z38002”,name:” 奥迪三轮毂}]} 那这样我该如何定义呢?
s = "{success:true,data:{ id: 100001, bin:\"JIT-3JS-2\",targetBin:\"JIT-3JS-3K\",batchs:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\"},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\"}]}}";
JObject jo = (JObject)JsonConvert.DeserializeObject(s);
//MessageBox.Show(jo["success"].ToString());
JToken js = (JToken)jo["data"];
//MessageBox.Show(js["id"].ToString());
//MessageBox.Show(js["bin"].ToString());
//MessageBox.Show(js["targetBin"].ToString());
MessageBox.Show(js["batchs"][0]["code"].ToString());
MessageBox.Show(js["batchs"][0]["name"].ToString());
MessageBox.Show(js["batchs"][1]["code"].ToString());
MessageBox.Show(js["batchs"][1]["name"].ToString());
or
s = "{success:true,data:{ id: 100001, bin:\"JIT-3JS-2\",targetBin:\"JIT-3JS-3K\",batchs:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\"},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\"}]}}";
JObject jo = (JObject)JsonConvert.DeserializeObject(s);
//MessageBox.Show(jo["success"].ToString());
JToken js = (JToken)jo["data"];
//MessageBox.Show(js["id"].ToString());
//MessageBox.Show(js["bin"].ToString());
//MessageBox.Show(js["targetBin"].ToString());
JArray jar = JArray.Parse(js["batchs"].ToString());
for (var i = 0; i < jar.Count; i++)
{
JObject j = JObject.Parse(jar[i].ToString());
MessageBox.Show(j["code"].ToString());
MessageBox.Show(j["name"].ToString());
}
类型“System.ComponentModel.ITypedList”在未被引用的程序集中定义。必须添加对程序集“System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用,我已经引用了 using Newtonsoft.Json.Linq;
using Newtonsoft.Json;,他字体都变了绿色了,求解?
低版本都 没得TObject了
s = "{success:true,data:{ id: 100001, bin:\"JIT-3JS-2\",targetBin:\"JIT-3JS-3K\",batchs:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\"},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\"}]}}"; var serializer = new JavaScriptSerializer();
var ret = serializer.Deserialize<dynamic>(s);
dynamic value = serializer.DeserializeObject(s);
int key1 = value["data"]["id"];
string key2 = value["data"]["bin"];
string key3 = value["data"]["targetBin"];
object[] key4 = value["data"]["batchs"];
object[] key4 = value["data"]["batchs"];
foreach (object obj in key4)
{
Dictionary<string, object> result = (Dictionary<string, object>)obj;
string code1 = result["code"].ToString();
string name1 = result["name"].ToString(); }