Как преобразовать XML в действительную строку JSONIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как преобразовать XML в действительную строку JSON

Сообщение Anonymous »

У меня есть некоторый XML-код, который я хотел бы передать в конечную точку API, однако для этого мне нужно преобразовать XML в действительную строку JSON. Когда я ищу в Интернете преобразование xml в JSON или «действительную строку JSON», я нахожу парсеры, которые преобразуют xml в объект json с той же структурой, что и xml. Мне нужно что-то другое: я хочу преобразовать XML в строку, которая будет использоваться как одно значение в словаре JSON.
Это означает, что мне нужно преобразовать новые строки в "\n ". Также результат должен пройти проверку JSON lint. https://jsonlint.com.
Например, предположим, что у меня есть следующий быстрый код:

Код: Выделить всё

import UIKit
import TableMVVM

class SubMenuChoice: NibView, HasViewModel {

@IBOutlet var titleLabel: UILabel!
@IBOutlet var detailsLabel: UILabel!
@IBOutlet var viewToGradient: BottomLeftToTopRightGradient!

var viewModel: ViewModel = .fallBack {
didSet {
self.titleLabel.text = viewModel.titleText
self.detailsLabel.text = viewModel.detailText
self.viewToGradient.layer.cornerRadius = 16
self.viewToGradient.clipsToBounds = true
self.viewToGradient.layer.borderColor = UIColor.white.cgColor
self.viewToGradient.layer.borderWidth = 0.2
}
}
}
Затем я преобразую ее в действительную однострочную строку json, заменяя новые строки буквальным возвратом каретки.

Код: Выделить всё

{"MyJSON" : "import UIKit\nimport TableMVVM\n\nclass SubMenuChoice: NibView, HasViewModel {\n\n    @IBOutlet var titleLabel: UILabel!\n    @IBOutlet var detailsLabel: UILabel!\n    @IBOutlet var viewToGradient: BottomLeftToTopRightGradient!\n\n    var viewModel: ViewModel = .fallBack {\n        didSet {\n            self.titleLabel.text = viewModel.titleText\n            self.detailsLabel.text = viewModel.detailText\n            self.viewToGradient.layer.cornerRadius = 16\n            self.viewToGradient.clipsToBounds = true\n            self.viewToGradient.layer.borderColor = UIColor.white.cgColor\n            self.viewToGradient.layer.borderWidth = 0.2\n        }\n    }\n}\n"}
Изображение

Вот текст, который мне нужно преобразовать в однострочное допустимое строковое значение JSON:

Код: Выделить всё

import UIKit
import TableMVVM

class SubMenuChoice: NibView, HasViewModel {

@IBOutlet var titleLabel: UILabel!
@IBOutlet var detailsLabel: UILabel!
@IBOutlet var viewToGradient: BottomLeftToTopRightGradient!

var viewModel: ViewModel = .fallBack {
didSet {
self.titleLabel.text = viewModel.titleText
self.detailsLabel.text = viewModel.detailText
self.viewToGradient.layer.cornerRadius = 16
self.viewToGradient.clipsToBounds = true
self.viewToGradient.layer.borderColor = UIColor.white.cgColor
self.viewToGradient.layer.borderWidth = 0.2
}
}
}

extension SubMenuChoice {
struct ViewModel: HasFallBack {
let titleText: String
let detailText: String

static var fallBack: Self {
.init(titleText: "-", detailText: "-")
}
}
}

///// Interface builder XML, .xib  /////










Inter-Regular
















































































///// Unit tests  /////

Import XCTest

class SubMenuChoiceTests: XCTestCase {

}

Когда я пытаюсь просто заменить новые строки литералами новых строк, это нарушает линтер JSON.
Изображение

Подозреваю, что я не первый человек, делающий подобные вещи, поэтому я Я надеюсь, что кто-нибудь знает формулу преобразования XML в действительный json-строка. Пожалуйста, помогите. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/723 ... son-string
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»