2016-03-14 2 views
-1

Я уже насыщен глядя на другие решения, но ни один не будет работать, так что здесь идет: Я хочу, чтобы преобразовать этот строкового значения, повторяю: строковое значение, к JSONObject или JSONArray :Преобразования строки в JSONArray с SwiftyJson врежется

[["demo": "Default", "tint": "ff00fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Travel Demo"], ["demo": "Demo 2", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Second Demo"], ["demo": "Demo 3", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Third Demo"], ["demo": "Demo 4", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Fourth Demo"], ["title": "zz", "tint": "ff00fd", "icon": "(default)", "language": "nld-NLD", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "demo": "z"], ["demo": "Add Demo..."]] 

Когда я пытаюсь преобразовать эту строку в JSON объект, с помощью этого кода, он выходит из строя:

let jConfigs = JSON(myString).array 
     print("=======json") 
     print(jConfigs![0]) 

в чем проблема? Преобразование этого в Dictionary<String,String> также будет отлично работать для меня.

UPDATE: Принятый ответ работает, я использовал replace() для очистки входной строки. Плюс, я сделал дополнительный шаг, чтобы завершить преобразование строки в массив JSON. Обратите внимание, что в моем случае я не могу контролировать, как идет строка, так как она -is-.

  var ss=InputString.replace("], [",withString: "}, {") 
      ss=ss.replace("[[",withString: "[{") 
      ss=ss.replace("]]",withString: "}]") 
      if let data = ss.dataUsingEncoding(NSUTF8StringEncoding){ 
       do{ 
        if let array = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as? [AnyObject] { 
         print(array) 
         } 
        } 
       } 
+2

Что строка? Я вижу массив словарей, а не строку JSON. Вы хотите 'Словарь ', но он уже '[Dictionary ]', вам не нужен SwiftyJSON, просто получите доступ к массиву. В этом вопросе нет JSON. – Moritz

+0

@ EricD. Это строка, строковое представление [Dictionary ] в любом случае. Вопрос: как я могу преобразовать его в объект JSON или в объект Dictionary? – Josh

+0

@ EricD. Там, если вы не просматриваете чтение, я подчеркнул это. – Josh

ответ

1

Вы указали неверный формат json.

Correct один (фигурные скобки для объекта):

[{ "демо": "По умолчанию", "Оттенок": "ff00fd", "значок": "http://someurl.com/icon.jpg", "язык": " en-US "," endpoint ":" http://pres.artifutions.com/traveldemoapp/ "," title ":" Travel Demo "}, {" demo ":" Demo 2 "," tint ":" ff99fd "," icon ":" http://someurl.com/icon.jpg», "язык": "EN-US", "конечная точка": "http://pres.artifutions.com/traveldemoapp/", "название": "Second Демо-версия" }]

+0

Вы, где правильно, ошибка не так заметна, и я не могу контролировать, как строка поступает так. Кроме того, для тех, кого это интересует, я добавил дополнительный шаг, чтобы преобразовать все это в массив JSON. – Josh

Смежные вопросы