[英]Reading json data from external api using C#
我正在嘗試讀取來自api的json數據,而我只想從此數據中讀取對象。
string id_url = "http://abc/some_id";
WebRequest requst = WebRequest.Create(id_url);
requst.Method = "GET";
requst.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("user:password"));
HttpWebResponse response = requst.GetResponse() as HttpWebResponse;
var encod = ASCIIEncoding.ASCII;
using (var readchat = new System.IO.StreamReader(response.GetResponseStream(), encod))
{
string chatresult = readchat.ReadToEnd();
var json = JObject.Parse(chatresult);
}
我得到json
作為:
{
"comment": null,
"triggered_response": true,
"rating": null,
"visitor": {
"phone": "",
"name": "abc"
},
"history": [
{
"name": "Visitor 7949",
"department_name": null,
"type": "chat.memberjoin",
"department_id": null
},
{
"name": "fdef",
"sender_type": "Trigger",
"msg": "Welcome back! How may I help you today?",
"type": "chat.msg"
},
{
"name": "use",
"sender_type": "Trigger",
"msg": "good morning",
"type": "chat.msg"
}
]
}
我必須使用C#從json
讀取“ msg”標簽數據。 我已經試過了:
string data = json["history"].ToString();
通過使用上面的代碼可以從“ history”標簽中獲取數據,但是就像我們使用javascript ajax一樣,如何能夠從history [array] .msg中獲取文本。
您可以將JsonConvert
與動態對象JsonConvert.DeserializeObject<dynamic>(data)
樣例代碼:
string data = " {\"comment\": null, \"triggered_response\": true, \"rating\": null, \"visitor\": { \"phone\": \"\", \"name\": \"abc\" }, \"history\": [ { \"name\": \"Visitor 7949\", \"department_name\": null, \"type\": \"chat.memberjoin\", \"department_id\": null }, { \"name\": \"fdef\", \"sender_type\": \"Trigger\", \"msg\": \"Welcome back! How may I help you today?\", \"type\": \"chat.msg\" },{ \"name\": \"use\", \"sender_type\": \"Trigger\", \"msg\": \"good morning\", \"type\": \"chat.msg\" } ] }";
var dynamicobject = JsonConvert.DeserializeObject<dynamic>(data);
var historyname = dynamicobject.history[0].name.ToString();
//data structure for mapping
public class History {
public string name { get; set; }
public string sender_type { get; set; }
public string msg { get; set; }
public string type { get; set; }
}
public class Visitor {
public string Phone { get; set; }
public string Name { get; set; }
}
public class ObjectThatContainsHistory {
public string Comment { get; set; }
public bool Triggered_Response { get; set; }
public string Rating { get; set; }
public Visitor Visitor { get; set; }
public List<History> History { get; set; }
}
var jsonString =
@"{
""comment"": null,
""triggered_response"": true,
""rating"": null,
""visitor"": {
""phone"": """",
""name"": ""abc""
},
""history"": [
{
""name"": ""Visitor 7949"",
""department_name"": null,
""type"": ""chat.memberjoin"",
""department_id"": null
},
{
""name"": ""fdef"",
""sender_type"": ""Trigger"",
""msg"": ""Welcome back! How may I help you today?"",
""type"": ""chat.msg""
},
{
""name"": ""use"",
""sender_type"": ""Trigger"",
""msg"": ""good morning"",
""type"": ""chat.msg""
}
]
}";
ObjectThatContainsHistory objectThatContainsHistory = JsonConvert.DeserializeObject<ObjectThatContainsHistory>(jsonString);
var messages = objectThatContainsHistory.History
.Select(x => x.msg)
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.