将字符串拆分为Dictionary键和Value

时间:2016-03-21 17:21:01

标签: c# json dictionary

我正在尝试将从相机接收的响应(字符串)拆分为键和值。这就是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);
                }
            }

我哪里出错了?

1 个答案:

答案 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。