2015-02-03 3 views
0

У меня есть следующая проблема. Я получаю jsonString с сервера, используя play2. В swift я конвертирую этот jsonString в jsonDictionary. Если мой полученный jsonString содержит только один jsonDocument, я могу скрывать его, как следующий код.Swift: Как преобразовать полученную строку в json

recieved Data: 
({"_id":{"$oid":"54cfc217dd99a083af6c3a54"},"kind":"photo","username":"gokn2","article":"das ist ein Test2","datetime":"31.12.2015 22:22:10","city":"Berlin","latitude":"52.00","longitude":"12.02","startdate":"12:00:00","enddate":"12:00:00","binary":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAABxpRE9UAAAAAgAAAAAAAAAKAAAAKAAAAAoAAAAKAAACm4NU0j0AAAJnSURBVDgRbJLdS1NxGMdXl9IfEUQ3XdVNRBAF3UaCWEYvFAgiCV6kJJrURGuI5WtTpjCXL9lM3atzmzo1Z5tbO2XuLbep29nbOWfnOGka1MW3fr+gBP3Bw+/HA8/n+X5/zyOTHXH07kzR+1W+zOzjRu0r8djiXKhgtwUL6kl/tFrFjF1pdJSdvD1+4ojSwylPdLeECfGxxLwPQtdbSG1vID3thVjRgt36bkgKNZiOSTSpXFtnK6dLDxMOZMTvP1uzkSQkq5NGpvolhLEZSN51ZCoVEJ0+kBxpUmjqw1y3EZcf29oPIP4/9378ai1kOAjjdgg6B3a2WQiGRYgaA/KDBoiP2sHJVcjU9VBw4mI58iU1YNQzh6HEZo7lqRJeY0S2bQiScRH5ETO2BvTwqKbh6rdgo3kQQm0nVUvARDlRam3X4fR90w0qz7TKF335JiQl8xLtTNSJr98hqTFhzPwVdcNrKO/xoKrfh5apIGYdQWzXdiP9oAn88DQS5+5BulSOJ0pnlg5qysvdZFfW6QAE8wcQcFq3gD5LGPIhBs1DPqiMARidUdjcm2CiHNKFfQj1PWCvPkT2hZoOyiXX4EyV8Y6MrMbOxCwkJghil0zUMB+CdiECy8dNuP0sYn++I54SEIlz+BRKYWo5BsusH+nrNcjZXeCVWnAVz1HaPD8hI3uWa+wF1zFKLRB4gBUphM3k6L22kaYQpd6P+gEvrjXM4VaHB4EGFUhtsrj2r+0uR0JmsoX3yI6RJOmYMi0jmS/gczhFbaqtYQq5q1hCiXzhXzRoA7A9G0Hq2HlsHb+A3KlivOqy7/8GAAD//5+9LFkAAAJkSURBVHWSS0wTYRDHN5z17tHoRT0YuZF4UA4a44uEoGB5+EiIGKogNpUWpDyUCk1bWFyVGpCgQksI1EYpFNwG3FiV2hLCo4bGFWhh26UNhcr1b7/PYMDETWZ3vnwzv/nPzDJW+/RWXKFF+NxdrJ4uhccyhFcTIjQvJnGb/YQC/ThyG9y42jSB2m4fWgdn4BCCCEQ3EOAGIKZlQNybibWDWTC2urYY1jr1gwCX0gsp8HvzG5R1+imk7IkHja994Owz4L0/4Q+EsbAYoTYnbyJeb4G47yyFxtMVqGrll5g77b5eWdUC6X4bYsI3REofY5SfQ+dwgEK882EshmVqvpRvcy9QlVyPF7EzSkTarDRXSom63Dg2yJys5nO9nB3xmqdYc3kgNXbSyqH1JGaXY/g4tURbJCqLjQIu1I1D2eFH8MZDyJqUCM80jf9ssOLwTUchs1/Rt6eKE6REcT2iHfY/FYt0ECtaMPllAVrbLPLMX5FR6UZmnQAdJyCoNGKtksXyKSVCWSokruugNo3JhMWQ51jJ+xzXy1GQOaxcq4Nk6MZqiR7S+XLMl7MY03ZRIz5pU0oVlHudiHY5aI7TOIBDt97mUdj264R6xDTZ1INNtZmqDBXUQO5z0ZnK2SrEKkxYuXgPkef9kN9NUHUbZc0g4zqudrLbnF1fAnVanFjPTiUevYIoZ0N8WIBU/QyR2nb6JxCfFEgUPcCQ3kZhB/JtabtAOw9EusrMh8iQycYTGpa2lTR3gygi2yR3JOZIqSN/Z+5/fTJcEpzT8KFf0zwiGkwjSYPe8Yv4lx7x/WSbfxfwD+U3jf3fV9sI+agAAAAASUVORK5CYII="}) 

Код в Swift:

let data=self.recvJsonString?.dataUsingEncoding(NSUTF8StringEncoding) 
var jsonDict=NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers, error: &error) as NSDictionary 

Но если строка JSON содержит более одного JSon документе doesnt't работы:

("{\"_id\":{\"$oid\":\"54cfd810dd99a083af6c3a5b\"},\"kind\":\"article\",\"username\":\"gokn1\",\"article\":\"das ist ein Test1\",\"datetime\":\"31.12.2015 22:22:10\",\"city\":\"Berlin\",\"latitude\":\"51.00\",\"longitude\":\"11.00\",\"startdate\":\"11:00:00\",\"enddate\":\"11:00:00\",\"binary\":\"\"}", 
"{\"_id\":{\"$oid\":\"54cfc217dd99a083af6c3a54\"},\"kind\":\"photo\",\"username\":\"gokn2\",\"article\":\"das ist ein Test2\",\"datetime\":\"31.12.2015 22:22:10\",\"city\":\"Berlin\",\"latitude\":\"52.00\",\"longitude\":\"12.02\",\"startdate\":\"12:00:00\",\"enddate\":\"12:00:00\",\"binary\":\"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAABxpRE9UAAAAAgAAAAAAAAAKAAAAKAAAAAoAAAAKAAACm4NU0j0AAAJnSURBVDgRbJLdS1NxGMdXl9IfEUQ3XdVNRBAF3UaCWEYvFAgiCV6kJJrURGuI5WtTpjCXL9lM3atzmzo1Z5tbO2XuLbep29nbOWfnOGka1MW3fr+gBP3Bw+/HA8/n+X5/zyOTHXH07kzR+1W+zOzjRu0r8djiXKhgtwUL6kl/tFrFjF1pdJSdvD1+4ojSwylPdLeECfGxxLwPQtdbSG1vID3thVjRgt36bkgKNZiOSTSpXFtnK6dLDxMOZMTvP1uzkSQkq5NGpvolhLEZSN51ZCoVEJ0+kBxpUmjqw1y3EZcf29oPIP4/9378ai1kOAjjdgg6B3a2WQiGRYgaA/KDBoiP2sHJVcjU9VBw4mI58iU1YNQzh6HEZo7lqRJeY0S2bQiScRH5ETO2BvTwqKbh6rdgo3kQQm0nVUvARDlRam3X4fR90w0qz7TKF335JiQl8xLtTNSJr98hqTFhzPwVdcNrKO/xoKrfh5apIGYdQWzXdiP9oAn88DQS5+5BulSOJ0pnlg5qysvdZFfW6QAE8wcQcFq3gD5LGPIhBs1DPqiMARidUdjcm2CiHNKFfQj1PWCvPkT2hZoOyiXX4EyV8Y6MrMbOxCwkJghil0zUMB+CdiECy8dNuP0sYn++I54SEIlz+BRKYWo5BsusH+nrNcjZXeCVWnAVz1HaPD8hI3uWa+wF1zFKLRB4gBUphM3k6L22kaYQpd6P+gEvrjXM4VaHB4EGFUhtsrj2r+0uR0JmsoX3yI6RJOmYMi0jmS/gczhFbaqtYQq5q1hCiXzhXzRoA7A9G0Hq2HlsHb+A3KlivOqy7/8GAAD//5+9LFkAAAJkSURBVHWSS0wTYRDHN5z17tHoRT0YuZF4UA4a44uEoGB5+EiIGKogNpUWpDyUCk1bWFyVGpCgQksI1EYpFNwG3FiV2hLCo4bGFWhh26UNhcr1b7/PYMDETWZ3vnwzv/nPzDJW+/RWXKFF+NxdrJ4uhccyhFcTIjQvJnGb/YQC/ThyG9y42jSB2m4fWgdn4BCCCEQ3EOAGIKZlQNybibWDWTC2urYY1jr1gwCX0gsp8HvzG5R1+imk7IkHja994Owz4L0/4Q+EsbAYoTYnbyJeb4G47yyFxtMVqGrll5g77b5eWdUC6X4bYsI3REofY5SfQ+dwgEK882EshmVqvpRvcy9QlVyPF7EzSkTarDRXSom63Dg2yJys5nO9nB3xmqdYc3kgNXbSyqH1JGaXY/g4tURbJCqLjQIu1I1D2eFH8MZDyJqUCM80jf9ssOLwTUchs1/Rt6eKE6REcT2iHfY/FYt0ECtaMPllAVrbLPLMX5FR6UZmnQAdJyCoNGKtksXyKSVCWSokruugNo3JhMWQ51jJ+xzXy1GQOaxcq4Nk6MZqiR7S+XLMl7MY03ZRIz5pU0oVlHudiHY5aI7TOIBDt97mUdj264R6xDTZ1INNtZmqDBXUQO5z0ZnK2SrEKkxYuXgPkef9kN9NUHUbZc0g4zqudrLbnF1fAnVanFjPTiUevYIoZ0N8WIBU/QyR2nb6JxCfFEgUPcCQ3kZhB/JtabtAOw9EusrMh8iQycYTGpa2lTR3gygi2yR3JOZIqSN/Z+5/fTJcEpzT8KFf0zwiGkwjSYPe8Yv4lx7x/WSbfxfwD+U3jf3fV9sI+agAAAAASUVORK5CYII=\"}" 

)

Кажется, я сначала нужно разбить jsons. Но как я могу это сделать. Может ли кто-нибудь помочь мне решить эту проблему.

Благодаря

+0

Почему бы не обернуть несколько json-документов в массив json? – findall

+0

Что это связано с Play? – Ryan

+0

Tahnks @findall. Это решило мою проблему. – masterWN

ответ

1

Второй пример не является допустимой строкой JSON. Попробуйте jsonlint.com для проверки строки JSON. Смотрите внимательно ... это на самом деле две строки.

двойные кавычки отмечают границу строк.

"{ \"val1\" : \"string1" }", "{ \"val1\" : \"String2\" }" 

Так что ... измените его следующим образом, чтобы сделать его единственной строкой JSON.

"{ \"val1\" : \"string1" }, { \"val1\" : \"String2\" }" 
Смежные вопросы