2016-03-22 2 views
0

Я пытаюсь сделать приложение iOS в качестве проекта, используя веб-сайт MTG Json как часть базы данных.Удаление строк из Json

Они предоставляют базу данных с открытым исходным кодом для всех карточек, напечатанных в игре. Вот как они их форматируют.

{"Air Elemental":{"layout":"normal","name":"Air Elemental","manaCost":"{3}{U}{U}","cmc":5,"colors":["Blue"],"type":"Creature — Elemental","types":["Creature"],"subtypes":["Elemental"],"text":"Flying","power":"4","toughness":"4","imageName":"air elemental","colorIdentity":["U"]}, 

    "Ancestral Recall":{"layout":"normal","name":"Ancestral Recall","manaCost":"{U}","cmc":1,"colors":["Blue"],"type":"Instant","types":["Instant"],"text":"Target player draws three cards.","mciNumber":"1","imageName":"ancestral recall","colorIdentity":["U"]}, 

То, что я хотел бы сделать, это написать код, который удаляет первую часть этих линий

Удаление «Ancestral Recall»: или «Air Elemental»: для простоты использования.

Есть ли простой способ сделать это? Или есть лучшее решение, которое мне не хватает?

Заранее спасибо

+0

Вы не объяснили, почему вы хотели изменить JSON. Чего вы пытаетесь достичь? – ryantxr

+0

Разберите JSON и получите доступ к нему, как и любой словарь/массив –

+0

Я делаю это как услугу для друга. Он всегда разбирал файлы таким образом, поэтому я пытаюсь облегчить его. То, как вы показали, так оно и есть. Если бы я пытался сделать это для себя, я бы попытался найти способ разобраться, как все это произошло. –

ответ

1

Я думаю, что вам не нужно, чтобы удалить эти строки, поскольку они являются ключевыми для объектов, представленных в формате JSON, вместо того, чтобы просто разобрать JSON, как это и получить объекты и здесь более конкретно NSDictionary и путем извлечения всех ключей словаря вы можете получить из него все объекты

+0

Если вам нужна дополнительная помощь, просто спросите об этом :) Я люблю помогать. –

+0

Я делаю это как услугу для друга. Он всегда разбирал файлы таким образом, поэтому я пытаюсь облегчить его. Если бы я пытался сделать это для себя, я бы попытался найти способ разобраться, как все это произошло. –

+0

Хорошо, желаю вам удачи, и если вы получите успех, сообщите нам об этом, если вы заполните это. Happy Coding ... :) –

1

JSON - это система с ключом. Вы используете ключ для получения значения/объекта. Если вы удалите ключ, вы не сможете получить значение. На самом деле, если ключ отсутствует, анализатор JSON будет жаловаться, что он не является допустимым JSON.

В вашем случае оба объекта практически одинаковы, они имеют множество общих записей. Вы можете создать глобальный тип, с пустыми записями и сделать его массив

{ 
    "Items": [{ 
     "layout": "normal", 
     "name": "Air Elemental", 
     "manaCost": "{3}{U}{U}", 
     "cmc": 5, 
     "colors": ["Blue"], 
     "type": "Creature — Elemental", 
     "types": ["Creature"], 
     "subtypes": ["Elemental"], 
     "text": "Flying", 
     "power": "4", 
     "toughness": "4", 
     "imageName": "air elemental", 
     "colorIdentity": ["U"] 
    }, { 
     "layout": "normal", 
     "name": "Ancestral Recall", 
     "manaCost": "{U}", 
     "cmc": 1, 
     "colors": ["Blue"], 
     "type": "Instant", 
     "types": ["Instant"], 
     "text": "Target player draws three cards.", 
     "mciNumber": "1", 
     "imageName": "ancestral recall", 
     "colorIdentity": ["U"] 
    }] 
} 

Это будет удалить один ключ, как вы все равно должны иметь ключ для словаря. Это связано с тем, что вы можете создать второй массив того же типа с другим именем. Вам нужно будет иметь возможность сделать разницу между обоими массивами.

0

Думаю, он этого хочет. Я разбираю все, как это, не знаю, как исправить ваш файл, хотя, извините.

[{ 
     "layout": "normal", 
     "name": "Ancestral Recall", 
     "manaCost": "{U}", 
     "cmc": 1, 
     "colors": ["Blue"], 
     "type": "Instant", 
     "types": ["Instant"], 
     "text": "Target player draws three cards.", 
     "mciNumber": "1", 
     "imageName": "ancestral recall", 
     "colorIdentity": ["U"] 
    }, { 
     "layout": "normal", 
     "name": "Ancestral Recall", 
     "manaCost": "{U}", 
     "cmc": 1, 
     "colors": ["Blue"], 
     "type": "Instant", 
     "types": ["Instant"], 
     "text": "Target player draws three cards.", 
     "mciNumber": "1", 
     "imageName": "ancestral recall", 
     "colorIdentity": ["U"] 
    }] 
+0

Я делаю это как услугу для друга. Он всегда разбирал файлы таким образом, поэтому я пытаюсь облегчить его. То, как вы показали, так оно и есть. Если бы я пытался сделать это для себя, я бы попытался найти способ разобраться, как все это произошло. –

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