Support
Quality
Security
License
Reuse
kandi has reviewed APIJSON and discovered the below as its top functions. This is intended to give you an instant insight into APIJSON implemented functionality, and help decide if they suit your requirements.
🚀 零代码、热更新、全自动 ORM 库,后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构。 🚀 A JSON Transmission Protocol and an ORM Library for automatically providing APIs and Docs.
Convert Excel data to JSON then Post it to API
Option Explicit
Private wks As Worksheet
Private lcolumn As Long
Private titles() As String
Private Sub ConvertAndSend()
Set wks = ThisWorkbook.Sheets(1)
lcolumn = wks.Cells(1, Columns.Count).End(xlToLeft).Column
GetKeys
Dim lrow As Long
lrow = wks.Cells(Rows.Count, "A").End(xlUp).Row
Dim i As Long
Dim apiJSON As String
Dim apiResponse As String
For i = 2 To lrow
apiJSON = ConvertJSON(i)
apiResponse = httpPost("API Endpoint URL", apiJSON)
Debug.Print apiResponse
Next i
End Sub
Private Sub GetKeys()
ReDim titles(lcolumn) As String
Dim i As Long
For i = 1 To lcolumn
titles(i) = wks.Cells(1, i)
Next i
End Sub
Function ConvertJSON(argRow As Long) As String
Dim dq As String
dq = Chr(34)
Dim json As String
json = "{"
Dim j As Long
For j = 1 To lcolumn
Select Case titles(j)
Case "sku", "uniqueID", "epid"
json = json & dq & titles(j) & dq & ":" & wks.Cells(argRow, j).Value2
Case Else
json = json & dq & titles(j) & dq & ":" & dq & wks.Cells(argRow, j).Value2 & dq
End Select
If j <> lcolumn Then json = json & ","
Next j
ConvertJSON = json & "}"
End Function
Function httpPost(url As String, msg As String) As String
With CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "POST", url, False
.setRequestHeader "Content-type", "application/json"
.send msg
httpPost = .responseText
End With
End Function
Powershell JSON object to HTML table and add it to the value of another JSON object
$jsonData = @'
{
"ReqId": 37,
"First Name": "John",
"Middle Name": "",
"Last Name": "O'Brian",
"Preferred Name": "John",
"Date": "04/28/2021 05:00:00",
"Email": "test@xyz.com",
"Notes": "This is a note with Special characters"
}
'@ | ConvertFrom-Json
$convData = $jsonData | ConvertTo-Html -Fragment
$apiJson = @"
{
"Title" : "This is Test",
"Description" : "This is Test Description.<br ><br /> $convData"
}
"@
UITableViewCell with UIImageView - Incorrect width at first load
DispatchQueue.main.async {
cell?.performPopulateData(data: self.contentInfo![indexPath.row])
}
How to Add a new JsonArray Property to a Existing Json Property using PowerShell
$apijson = Invoke-WebRequest -Uri $api -ErrorAction SilentlyContinue | ConvertFrom-Json
$newjson = @'
[
{
"name": "TLE",
"Strength": 128
},
{
"name": "TLS",
"trength": 415
}
]
'@ | ConvertFrom-Json
$apijson | Add-Member -Type NoteProperty -Name 'Strength' -Value @($newjson)
$apijson | ConvertTo-Json -Depth 10
QUESTION
I have 2 view controllers with same logic but one of them is not working
Asked 2022-Feb-03 at 08:49I have 2 view models TransferViewModel which has the respective TransferViewController for making Local Transactions from a model LocalTransactionRequest and i have BankTransferViewModel which has a model BankTransactionsRequest, the first one is working but the second one is not, both view controllers are supposed to perform segue to another view controller ConfirmViewController, but the second one (BankTransferViewController) is not working
[This one is TransferViewController][1]
private func setupViewModel() {
viewModel.isTransfer = isTransfer
viewModel.loan = loan
viewModel.getBalance()
transferButton.rx.tap.asObservable().subscribe(onNext: { [weak self] _ in
guard let strongSelf = self else { return }
if let isVerified = UserManager.shared.get()?.IsVerified.value, isVerified{
strongSelf.viewModel.phoneNumberText.accept(strongSelf.phoneNumberTextField.text ?? "")
strongSelf.viewModel.amountText.accept(strongSelf.amountTextField.text ?? "")
strongSelf.viewModel.transfer()
}else{
strongSelf.showVerificationAlert()
}
}).disposed(by: disposeBag)
viewModel.accountInfo.asObservable().subscribe(onNext: { [weak self] accountInfo in
if let account = accountInfo{
guard let strongSelf = self else { return }
strongSelf.accountInfo = account
let request = LocalTransactionRequest(Identification: UserManager.shared.identification ?? "", Amount: Double(strongSelf.amountTextField.text!)!, ReceiverPhoneNumber: strongSelf.phoneNumberTextField.text!, IDBankAccount: UserManager.shared.defaultBankAccountId ?? -1, IsFromTransfer: strongSelf.isTransfer, Description: strongSelf.descriptionTF.text!)
strongSelf.transferRequest.accept(request)
strongSelf.performSegue(withIdentifier: "segue_toConfirmTransfer", sender: account)
}
}).disposed(by: disposeBag)
}
[This one is BankTransferViewController][2]
private func setupViewModel(){
viewModel.isTransfer = isTransfer
viewModel.getBalance()
transferButton.rx.tap.asObservable().subscribe(onNext: { [weak self] _ in
guard let strongSelf = self else { return }
if let isVerified = UserManager.shared.get()?.IsVerified.value, isVerified{
strongSelf.viewModel.bankNumberText.accept(strongSelf.bankNumberTextField.text ?? "")
strongSelf.viewModel.firstName.accept(strongSelf.firstNameTextField.text ?? "")
strongSelf.viewModel.lastName.accept(strongSelf.lastNameTextField.text ?? "")
strongSelf.viewModel.amountText.accept(strongSelf.amountTextField.text ?? "")
strongSelf.viewModel.descriptionText.accept(strongSelf.descriptionTF.text ?? "")
strongSelf.viewModel.transferNational()
}else{
strongSelf.showVerificationAlert()
}
}).disposed(by: disposeBag)
viewModel.transferRequest.asObservable().subscribe(onNext: { [weak self] bankRequest in
if let bank = bankRequest{
guard let strongSelf = self else { return }
strongSelf.bankTransferRequest = bank
let request = BankTransactionRequest(Identification: UserManager.shared.identification ?? "", ReceiverBankAccount: strongSelf.bankNumberTextField.text!, ReceiverFirst: strongSelf.firstNameTextField.text!, ReceiverLast: strongSelf.lastNameTextField.text!, Amount: Double(strongSelf.amountTextField.text!)!, Description: strongSelf.descriptionTF.text!)
strongSelf.nationalTransferRequest.accept(request)
DispatchQueue.main.async {
strongSelf.performSegue(withIdentifier: "segue_toConfirmTransfer", sender: bank)
}
}
}).disposed(by: disposeBag)
}
This is view model of BankTransferViewController
import RxCocoa
import RxSwift
class BankTransferViewModel: BaseViewModel {
private let transferUseCase: TransferUseCase
var accountInfo: BehaviorRelay<AccountExistModel?> = BehaviorRelay(value: nil)
var balance: BehaviorRelay<BalanceModel?> = BehaviorRelay(value: nil)
var bankNumberText: BehaviorRelay<String> = BehaviorRelay(value: "")
var firstName: BehaviorRelay<String> = BehaviorRelay(value: "")
var lastName: BehaviorRelay<String> = BehaviorRelay(value: "")
var amountText: BehaviorRelay<String> = BehaviorRelay(value: "")
var descriptionText: BehaviorRelay<String> = BehaviorRelay(value: "")
var transferRequest: BehaviorRelay<BankTransactionRequest?> = BehaviorRelay(value: nil)
var accountExist = PublishSubject<Bool>()
var hasMoney = PublishSubject<Bool>()
var invalidBankNumber = PublishSubject<Bool>()
var accountCannotRecieve = PublishSubject<Bool>()
var isTransfer : Bool = true
var transferPressed: AnyObserver<Void> {
return AnyObserver { [weak self] event in
switch event {
case .next:
guard let strongSelf = self else {
return
}
strongSelf.checkValidation()
default:
break
}
}
}
init(transferUseCase: TransferUseCase) {
self.transferUseCase = transferUseCase
}
func transferNational() {
self.checkValidation()
}
private func checkValidation() {
guard let balance = self.balance.value else {
state.onNext(.error(error: RepoError(with: "Dështoi verifikimi i disponueshmërisë financiare. Ju lusim të provoni më vonë.")))
return
}
if bankNumberText.value == ""{
state.onNext(.error(error: RepoError(with: "Plotëso fushën për numrin e bankës të pranuesit.")))
return
}
if bankNumberText.value.count < 6{
state.onNext(.error(error: RepoError(with:"Ju lutemi, shtypni një numër valid të gjirollogarisë")))
return
}
guard let doubleAmount = Double(amountText.value), doubleAmount > 0 else {
state.onNext(.error(error: RepoError(with: "Shuma jo e rregullt")))
return
}
if amountText.value == ""{
state.onNext(.error(error: RepoError(with: "Shuma jo e
saktë.")))
return
}
if balance.Balance < doubleAmount{
state.onNext(.error(error: RepoError(with: "Nuk keni fonde të mjaftueshme për realizimin e transaksionit.")))
return
}
if bankNumberText.value != "" && amountText.value != "" && (balance.Balance >= doubleAmount) {
// checkAccountExist()
}
}
func checkModulus16(accountNumber: String) -> Bool {
if accountNumber.isEmpty{
return false
}
let newValue = accountNumber.dropLast(2)
let mod = Int64(newValue + "00")! % 97
let result = 98 - mod
let derivedData = newValue + "" + (result < 10 ? "0\(result)" : "\(result)")
return Int64(derivedData) == Int64(accountNumber)
}
func showError(with message: String ) {
state.onNext(.error(error: RepoError(with: message)))
}
func getBalance(){
let params = ["Identification": UserManager.shared.identification ?? "" ] as ApiJson
transferUseCase.getBalance(with: params) {[weak self] (balance, error) in
guard let strongSelf = self else { return }
if let error = error {
strongSelf.state.onNext(.error(error: error))
strongSelf.accountExist.onNext(false)
}else if let balance = balance{
UserManager.shared.userBonus = balance.BonusAmount
strongSelf.state.onNext(.content)
strongSelf.balance.accept(balance)
strongSelf.accountExist.onNext(true)
UserManager.shared.updateBalance(with: balance)
}
}
}
//MARK: - baseViewModel
override func tryAgain() {
self.getBalance()
}
}
ANSWER
Answered 2022-Feb-03 at 08:49Make sure the following points are valid for your performSegue
to work in BankTransferViewController:
performSegue(withIdentifier: yourIdentifier, sender: yourModel)
is the exact same identifier as the segue in storyboard that is connecting the two view controllers.viewModel.transferRequest.asObservable().subscribe(onNext:
code, make sure you are emmiting a value to viewModel.transferRequest
somewhere in the code. Otherwise, performSegue
will never get called.if let bank = bankRequest{
before using performSegue
, make sure the transferRequest value you emmit is not nil.Community Discussions, Code Snippets contain sources that include Stack Exchange Network
No vulnerabilities reported
Save this library and start creating your kit
Explore Related Topics
Save this library and start creating your kit