我正在尝试将从相机接收的响应(字符串)拆分为键和值。这就是IP摄像机的字符串:
{"error":0,"session":678939290,"group":131071}
我想将它们分成没有“”的键和数组。 例如:
键< ----> 值
错误 0
会话 678939290
群组 131071
以下是我目前使用的代码:
string tempResponse = serverResponse;
//Remove Left and Right curly braces
tempResponse = tempResponse.Replace("{", "");
tempResponse = tempResponse.Replace("}", "");
//Remove '"' from the string
tempResponse = tempResponse.Replace("\"", "");
//Now Make sure that there is no Space begining and end of the string
tempResponse = tempResponse.TrimStart().TrimEnd();
var items = tempResponse.Split(new[] { ',' }, StringSplitOptions.None)
.Select(s => s.Split(new[] { ':' }));
Dictionary<string, string> camInfoDICT = null; //Stores the camInfo as keys and values
camInfoDICT = new Dictionary<string, string>();
foreach (var item in items)
{
try
{
camInfoDICT.Add(item[0], item[1]);
}
catch (Exception e)
{
Debug.Log("Exception " + e.Message);
}
}
有效。代码功能符合预期,我能够提取来自camInfoDICT
的信息为键和值。
问题是投掷 Exception
Exception Array index is out of range
。在
foreach (var item in items)
{
try
{
camInfoDICT.Add(item[0], item[1]);
}
catch (Exception e)
{
Debug.Log("Exception " + e.Message);
}
}
我哪里出错了?
答案 0 :(得分:7)
不使用手动解析,而是使用Json转换。该字符串是JSON string。您可以使用任何可用的JSON反序列化器,例如Newtonsoft JSON parser,它将是:
string jsonString = "{\"error\":0,\"session\":678939290,\"group\":131071}";
Dictionary<string, int> camInfoDICT = JsonConvert.DeserializeObject<Dictionary<string, int>>(jsonString);
要包含Netwonsoft JSON,请在Visual Studio中使用Nugget Package Manager。