Flutter 字符串與JSON相互轉(zhuǎn)化

前言

近期調(diào)接口加密,iOS原生已經(jīng)調(diào)通的情況下,直接把iOS里的Objective-C代碼拷貝到flutter的插件包里調(diào)用,居然花了我3天時(shí)間,遇到的問(wèn)題基本上都很無(wú)理頭的情況,比如本來(lái)需要傳輸json字符串,結(jié)果直接傳了toString()字符串,另外一個(gè)就是過(guò)度為了追求代碼的復(fù)用,導(dǎo)致判斷邏輯過(guò)于復(fù)雜,不利于查找bug,以后寫代碼盡量功能分離,不要為了追求代碼的復(fù)用而犧牲代碼的可讀性,功能模塊化

遇到的問(wèn)題1:

使用toString()方法能將對(duì)象轉(zhuǎn)換成字符串,但是會(huì)丟失引號(hào)等信息,不再是標(biāo)準(zhǔn)JSON,導(dǎo)致服務(wù)端解析不正常

json轉(zhuǎn)換為字符串

import 'dart:convert' as convert;
/// json轉(zhuǎn)換為字符串
void testJson2String(){
  var user = { "name": "John Smith", "email": "john@example.com"};
  String jsonString = convert.jsonEncode(user);
  String normalString2 = user.toString();
  print('打印對(duì)象: $user');
  print('打印toString: $normalString2');
  print('打印JSON: $jsonString');
  var nameList = ["小明","韓梅梅","李華"];
  String normalNameString = nameList.toString();
  String josnNameString = convert.jsonEncode(nameList);
  print(nameList);
  print(normalNameString);
  print(josnNameString);
}

打印結(jié)果

打印對(duì)象: {name: John Smith, email: john@example.com}
打印toString: {name: John Smith, email: john@example.com}
打印JSON: {"name":"John Smith","email":"john@example.com"}
[小明, 韓梅梅, 李華]
[小明, 韓梅梅, 李華]
["小明","韓梅梅","李華"]

字符串轉(zhuǎn)json

/// 字符串轉(zhuǎn)json
void testString2Json(){
  var jsonTxt1 = '{ "name": "John Smith", "email": "john@example.com"}';
  Map<String, dynamic> user = convert.jsonDecode(jsonString1);
  var jsonTxt2 = '["小明","韓梅梅","李華"]';
  List nameList = convert.jsonDecode(jsonTxt2);
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容