サンプルJSON文字列の下に示すように、内部JSONメッセージ配列要素にアクセスしようとしています。C#でのメッセージ要素の内部ネストJSON配列へのアクセス
{"chats":
[
//////////1ST CHAT
{"type":"chat",
"id":"OYTHUUBLB2",
"tickets":[],
"visitor_name":"Shen",
"visitor_id":"value",
"visitor_ip":"val",
"visitor":
{"id":"",
"name":"Shen",
"email":"[email protected]",
"ip":"val",
"city":"Brampton",
"region":"Ontario",
"country":"Canada",
"country_code":"CA",
"timezone":"America/Rainy_River"},
"agents":[
{"display_name":"Kim",
"email":"[email protected]",
"ip":"72."},
],
"supervisors":[],
"rate":"not_rated",
"duration":213,
"chat_start_url":"httpsjj",
"group":[3],
"started":"Fri 10/27/17 01:12:38 pm",
"pending":false,
"tags":[],
"timezone":"America/Bogota",
"messages":[
{
"author_name":"Kim",
"text":"Hello Shenelle. How may I help you?",
"date":"Fri10/27/17 01:12:38 pm",
"timestamp":1509127958,
"agent_id":"val",
"user_type":"agent",
"type":"message",
"welcome_message":true,
}
{"author_name":"Shenelle",
"text":"I would like",
"date":"Fri 10/27/17 01:12:56 pm",
"timestamp":1509127976,
"user_type":"visitor",
"type":"message"},
{
"author_name":"Shenelle",
"text":"helooooooooooooooooo",
"date":"Fri10/27/17 01:15:47 pm",
"timestamp":1509128147,
"user_type":"visitor",
"type":"message"},
]
ここで私はすでにC#で試したことがあります。私は他の要素にアクセスすることができますが、その内側の入れ子JSONメッセージ配列は私の問題です。誰でも[text]要素にアクセスするコードを助けることができますか?特定のChatIndexの[text]要素のすべての反復を連結したいだけです。私の最終的な結果は、個々のチャットのすべての[テキスト]要素を連結することです。 Newtonsoft.Jsonを使用して
// JObject chatMessage = JObject.Parse(result);
dynamic chatMessage = JsonConvert.DeserializeObject(result);
int totalChats = (int)chatMessage["total"];//totalChats gives count of all individual chats
for(int chatIndex = 0; chatIndex < totalChats; chatIndex++)
{
string id = (string)chatMessage["chats"][chatIndex]["id"];
string city = (string)chatMessage["chats"][chatIndex]["visitor"]["city"];
string region = (string)chatMessage["chats"][chatIndex]["visitor"]["region"];
string country = (string)chatMessage["chats"][chatIndex]["visitor"]["country"];
string visitorName = (string)chatMessage["chats"][chatIndex]["visitor"]["name"];
string visitorEmail = (string)chatMessage["chats"][chatIndex]["visitor"]["email"];
Console.WriteLine("ID: "+id+ "\nVisitor Name: " +visitorName+ "\nVisitor Email:"+visitorEmail
+ "\nVisitor City:"+ city + "\nVisitor Region:"+region +"\nCountry of visitor:"+ country);
// int messageIndex = chatMessage["chats"][chatIndex]["messages"].length;
// foreach (var messageIndex in chatMessage.messages)
// {
for (int messageIndex = 0; messageIndex < chatMessage["chats"][chatIndex]["messages"]; messageIndex++) {
// string msg = (string)chatMessage["chats"][chatIndex]["messages"][messageIndex]["author_name"];
string text = (string)chatMessage["chats"][chatIndex]["messages"][messageIndex]["text"];
// string.Concat(","+text);
Console.WriteLine("\n TEXT:"+text);
}
Console.WriteLine(""); //x++;
}
json stringに何らかのフォーマットエラーがありますか?いくつかのコンマ(、)がありません –
@AryanFirouzyan私は元のJSON文字列からスニペットをコピーして、メッセージ要素がどのようにネストされているかを理解できるようにしました。しかし、私は他の要素にアクセスすることができます。コード内のすべての[text]要素を取得するための内部ループとそれらをconcatしたい – ForzaC
**メッセージの2番目と3番目の項目をチェック**値 –