在这篇文章中,我们将为您详细介绍swift到底要不要json转对象的内容,并且讨论关于swiftjson转model的相关问题。此外,我们还会涉及一些关于C#json转对象、c#中string字符串转
在这篇文章中,我们将为您详细介绍swift到底要不要json转对象的内容,并且讨论关于swift json转model的相关问题。此外,我们还会涉及一些关于C# json转对象、c#中string字符串转为json与json转对象、CSS中的url()到底要不要加引号、fastJson json转对象时发生异常的知识,以帮助您更全面地了解这个主题。
本文目录一览:- swift到底要不要json转对象(swift json转model)
- C# json转对象
- c#中string字符串转为json与json转对象
- CSS中的url()到底要不要加引号
- fastJson json转对象时发生异常
swift到底要不要json转对象(swift json转model)
哎!吵的头疼! 不上代码都是耍流氓
我个人的答案是:
我们一定要认清楚应用场景,
看情况!好吧是废话,请看代码
先弄清:
问题1:我们先来了解 什么是引用类型,而结构体是值类型。
问题2:团队用的ObjectMapper 是我们来看看是不是能支持值类型
问题3:我们来理解一下面向协议开发上几个demo
问题1的代码:
//我们先来看看结构体
let demoClass = MyClass()
let demoStruct = MyStruct(name: "赵大财", age: 18)
var demoClassMove = demoClass
var demoStructMove = demoStruct
demoClassMove.name = "赵大财G"
demoStructMove.name = "赵大财G"
print(demoClass.name , demoStruct.name) //可以看出结构体重的name并没有被改变
//ok 我们在试试数组+字典 这种最长用的模型
var dictArr = [["name":"字典赵大财1"],["name":"字典赵大财2"]]
var dictArrMove = dictArr
dictArrMove[0]["name"] = "字典赵大财1G"
print("我们看看原来的改了没", dictArr.first!["name"])
print("我们看看现在的", dictArrMove.first!["name"]) //可以看出原来的没有被改变
//OK 我们先试一试模型
let model1 = MyClass()
model1.name = "模型赵大财1"
let model2 = MyClass()
model2.name = "模型赵大财2"
var modelArr = [model1,model2]
var modelArrMove = modelArr
modelArrMove[0].name = "模型改变"
print("模型原来", modelArr[0].name)
print("模型改后", modelArrMove[0].name) //可以看出原来的没有被改变
demo2:
import ObjectMapper
struct Temperature: Mappable {
var name:String = ""
var age:String = ""
init?(map: Map) {
}
mutating func mapping(map: Map) {
name <- map["name"]
age <- map["age"]
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let dict = "{\"name\":\"赵大财\",\"age\":\"100\"}"
let structModel = Mapper<Temperature>().map(JSONString: dict)
print( structModel?.name ?? "")
}
}
协议 有点累了 有使劲再写
协议有好多的东西可以写 我们先来简单点的
// 普通协议 //扩展协议 //结构体协议 协议的协议
C# json转对象
EnterpriseResponse09.json


{
"response_biz_content": {
"MSG": "OK",
"return_msg": "OK",
"msg_id": "637067564513056852",
"DATA": [{
"SIZE": 1,
"TCONF": {
"C_EFFECTIVE_FLAG": "案件状态",
"C_CASE_CODE": "案号",
"C_SEX_NAME": "性别",
"C_AREA_NAME": "地域名称",
"C_GIST_UNIT": "作出执行依据单位",
"C_BUESINESSENTITY": "企业法人姓名",
"N_PARTY_TYPE_NAME": "标识自然人或企业法人",
"D_DATA_DATE": "数据日期",
"UNPERFORM_PART": "未履行部分",
"N_AGE": "年龄",
"PERFORMED_PART": "已履行部分",
"C_PERFORMANCE": "被执行人的履行情况",
"D_REG_DATE": "立案时间",
"DUTY": "法律生效文书确定的义务",
"C_INAME": "失信被执行人姓名/名称",
"D_PUBLISH_DATE": "发布时间",
"C_CARDNUM": "身份证号码/组织机构代码",
"C_DISREPUT_TYPE_NAME": "失信被执行人具体情形",
"C_COURT_NAME": "执行法院",
"N_AREA_ID": "地域ID",
"C_GIST_CID": "执行依据文号"
},
"MODEL": "09",
"RISKTYPE": "失信被执行人",
"RISKTYPEDES": "存在通过各种方法拒不执行法院判决的行为,俗称“老赖”。",
"TOTALCOUNT": 1,
"TDATA": [{
"C_EFFECTIVE_FLAG": "1",
"C_CASE_CODE": "(2008)沪213232法执字第01109号",
"C_SEX_NAME": "",
"C_AREA_NAME": "上海",
"C_GIST_UNIT": "厦门市集美区人民法院",
"C_BUESINESSENTITY": "李国华",
"N_PARTY_TYPE_NAME": "",
"D_DATA_DATE": "20190816",
"UNPERFORM_PART": "",
"N_AGE": "0",
"PERFORMED_PART": "",
"C_PERFORMANCE": "全部未履行",
"D_REG_DATE": "20080902",
"DUTY": "",
"C_INAME": "79757239202-0",
"D_PUBLISH_DATE": "20150106",
"C_CARDNUM": "",
"C_DISREPUT_TYPE_NAME": "其他有履行能力而拒不履行生效法律文书确定义务",
"C_COURT_NAME": "上海市浦东新区人民法院",
"N_AREA_ID": 672,
"C_GIST_CID": "(2008)沪法执字第01109号"
}]
}],
"return_code": "0000",
"CODE": "02-000-203-0000"
},
"sign": "H8ESG0qXjYqZaA+rVcY0akVItL74kP11Mb2N4ZaABqL6/FZhU4HfxxKnn9NKU/DDbuIms7Udc89hqmWCzUMDIgKmbisvqimIddjj1RcLNEtiIxgbSwbCmb1KeEFw9gSZiS+7T6kzA86LuFw1IlJRIxU3DBxPzArY88+6RyZmyBQ="
}
TestResponse.cs


using System;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
[Serializable, DataContract]
public class IcbcResponse
{
[DataMember]
private int return_code = -1;
[DataMember]
private string return_msg = "unexpected error.";
[DataMember]
private string msg_id;
public string getMsgId()
{
return this.msg_id;
}
public int getReturnCode()
{
return this.return_code;
}
public string getReturnMsg()
{
return this.return_msg;
}
public bool isSuccess()
{
return (this.return_code == 0);
}
public void setMsgId(string value)
{
this.msg_id = value;
}
public void setReturnCode(int value)
{
this.return_code = value;
}
public void setReturnMsg(string value)
{
this.return_msg = value;
}
[DataMember]
public string MSG { get; set; }
[DataMember]
public string CODE { get; set; }
}
EnterpriseResponse09.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace Entity.Response.Enterprise
{
public class EnterpriseResponse09 : TestResponse
{
[DataMember]
public List<DATAItem> DATA { get; set; }
/// <summary>
/// 数据属性
/// </summary>
public class DATAItem
{
/// <summary>
/// 数量
/// </summary>
public int SIZE { get; set; }
/// <summary>
/// 列名
/// </summary>
public TCONF TCONF { get; set; }
/// <summary>
/// 关联服务查询类型
/// </summary>
public string MODEL { get; set; }
/// <summary>
/// 失信被执行人
/// </summary>
public string RISKTYPE { get; set; }
/// <summary>
/// 存在通过各种方法拒不执行法院判决的行为,俗称“老赖”。
/// </summary>
public string RISKTYPEDES { get; set; }
/// <summary>
/// 数量
/// </summary>
public int TOTALCOUNT { get; set; }
/// <summary>
/// 数据
/// </summary>
public List<TDATAItem> TDATA { get; set; }
/// <summary>
/// 数据
/// </summary>
public class TDATAItem
{
/// <summary>
/// 案号|Case Number
/// </summary>
public string C_CASE_CODE { get; set; }
/// <summary>
/// 失信被执行人姓名/名称|Name/Designation
/// </summary>
public string C_INAME { get; set; }
/// <summary>
/// 性别|Gender
/// </summary>
public string C_SEX_NAME { get; set; }
/// <summary>
/// 年龄|Age
/// </summary>
public string N_AGE { get; set; }
/// <summary>
/// 身份证号码/组织机构代码|ID card No./Org code
/// </summary>
public string C_CARDNUM { get; set; }
/// <summary>
/// 企业法人姓名|Name of legal person
/// </summary>
public string C_BUESINESSENTITY { get; set; }
/// <summary>
/// 执行法院|The Court
/// </summary>
public string C_COURT_NAME { get; set; }
/// <summary>
/// 地域ID|Region ID
/// </summary>
public string N_AREA_ID { get; set; }
/// <summary>
/// 地域名称|Region name
/// </summary>
public string C_AREA_NAME { get; set; }
/// <summary>
/// 标识自然人或企业法人|Natural/legal person
/// </summary>
public string N_PARTY_TYPE_NAME { get; set; }
/// <summary>
/// 执行依据文号|Exec. basis doc No.
/// </summary>
public string C_GIST_CID { get; set; }
/// <summary>
/// 作出执行依据单位|Unit of execution basis
/// </summary>
public string C_GIST_UNIT { get; set; }
/// <summary>
/// 法律生效文书确定的义务|Obligation of legal doc
/// </summary>
public string DUTY { get; set; }
/// <summary>
/// 被执行人的履行情况|Perf. of executed
/// </summary>
public string C_PERFORMANCE { get; set; }
/// <summary>
/// 失信被执行人具体情形|Situation of executed
/// </summary>
public string C_DISREPUT_TYPE_NAME { get; set; }
/// <summary>
/// 发布时间|Time of release
/// </summary>
public string D_PUBLISH_DATE { get; set; }
/// <summary>
/// 立案时间|Time of case filing
/// </summary>
public string D_REG_DATE { get; set; }
/// <summary>
/// 已履行部分|Performed
/// </summary>
public string PERFORMED_PART { get; set; }
/// <summary>
/// 未履行部分|To be performed
/// </summary>
public string UNPERFORM_PART { get; set; }
/// <summary>
/// 案件状态|Case status
/// </summary>
public string C_EFFECTIVE_FLAG { get; set; }
/// <summary>
/// 数据日期
/// </summary>
public string D_DATA_DATE { get; set; }
}
}
/// <summary>
/// 数据描述
/// </summary>
public class TCONF
{
/// <summary>
/// 案件状态
/// </summary>
public string C_EFFECTIVE_FLAG { get; set; }
/// <summary>
/// 案号
/// </summary>
public string C_CASE_CODE { get; set; }
/// <summary>
/// 性别
/// </summary>
public string C_SEX_NAME { get; set; }
/// <summary>
/// 地域名称
/// </summary>
public string C_AREA_NAME { get; set; }
/// <summary>
/// 作出执行依据单位
/// </summary>
public string C_GIST_UNIT { get; set; }
/// <summary>
/// 企业法人姓名
/// </summary>
public string C_BUESINESSENTITY { get; set; }
/// <summary>
/// 标识自然人或企业法人
/// </summary>
public string N_PARTY_TYPE_NAME { get; set; }
/// <summary>
/// 数据日期
/// </summary>
public string D_DATA_DATE { get; set; }
/// <summary>
/// 未履行部分
/// </summary>
public string UNPERFORM_PART { get; set; }
/// <summary>
/// 年龄
/// </summary>
public string N_AGE { get; set; }
/// <summary>
/// 已履行部分
/// </summary>
public string PERFORMED_PART { get; set; }
/// <summary>
/// 被执行人的履行情况
/// </summary>
public string C_PERFORMANCE { get; set; }
/// <summary>
/// 立案时间
/// </summary>
public string D_REG_DATE { get; set; }
/// <summary>
/// 法律生效文书确定的义务
/// </summary>
public string DUTY { get; set; }
/// <summary>
/// 失信被执行人姓名/名称
/// </summary>
public string C_INAME { get; set; }
/// <summary>
/// 发布时间
/// </summary>
public string D_PUBLISH_DATE { get; set; }
/// <summary>
/// 身份证号码/组织机构代码
/// </summary>
public string C_CARDNUM { get; set; }
/// <summary>
/// 失信被执行人具体情形
/// </summary>
public string C_DISREPUT_TYPE_NAME { get; set; }
/// <summary>
/// 执行法院
/// </summary>
public string C_COURT_NAME { get; set; }
/// <summary>
/// 地域ID
/// </summary>
public string N_AREA_ID { get; set; }
/// <summary>
/// 执行依据文号
/// </summary>
public string C_GIST_CID { get; set; }
}
}
}
DataContractJsonSerializer


string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
string jsonfile = Path.Combine(baseDirectory, "EnterpriseResponse09.json");
string responseJson = string.Empty;
using (StreamReader r = new StreamReader(jsonfile))
{
responseJson = r.ReadToEnd();
}
string response_biz_content = "response_biz_content";
int startIndex = (responseJson.IndexOf(response_biz_content) + response_biz_content.Length) + 2;
string content = responseJson.Substring(startIndex, responseJson.LastIndexOf(",") - startIndex);
EnterpriseResponse09 response = null;
using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(content)))
{
response = (EnterpriseResponse09)new DataContractJsonSerializer(typeof(EnterpriseResponse09)).ReadObject(stream);
}
//responseJson = "{\"response_biz_content\":{\"MSG\":\"OK\",\"return_msg\":\"OK\",\"msg_id\":\"637067564513056852\",\"DATA\":[{\"SIZE\":1,\"TCONF\":{\"C_EFFECTIVE_FLAG\":\"案件状态\",\"C_CASE_CODE\":\"案号\",\"C_SEX_NAME\":\"性别\",\"C_AREA_NAME\":\"地域名称\",\"C_GIST_UNIT\":\"作出执行依据单位\",\"C_BUESINESSENTITY\":\"企业法人姓名\",\"N_PARTY_TYPE_NAME\":\"标识自然人或企业法人\",\"D_DATA_DATE\":\"数据日期\",\"UNPERFORM_PART\":\"未履行部分\",\"N_AGE\":\"年龄\",\"PERFORMED_PART\":\"已履行部分\",\"C_PERFORMANCE\":\"被执行人的履行情况\",\"D_REG_DATE\":\"立案时间\",\"DUTY\":\"法律生效文书确定的义务\",\"C_INAME\":\"失信被执行人姓名/名称\",\"D_PUBLISH_DATE\":\"发布时间\",\"C_CARDNUM\":\"身份证号码/组织机构代码\",\"C_DISREPUT_TYPE_NAME\":\"失信被执行人具体情形\",\"C_COURT_NAME\":\"执行法院\",\"N_AREA_ID\":\"地域ID\",\"C_GIST_CID\":\"执行依据文号\"},\"MODEL\":\"09\",\"RISKTYPE\":\"失信被执行人\",\"RISKTYPEDES\":\"存在通过各种方法拒不执行法院判决的行为,俗称“老赖”。\",\"TOTALCOUNT\":1,\"TDATA\":[{\"C_EFFECTIVE_FLAG\":\"1\",\"C_CASE_CODE\":\"(2008)沪213232法执字第01109号\",\"C_SEX_NAME\":\"\",\"C_AREA_NAME\":\"上海\",\"C_GIST_UNIT\":\"厦门市集美区人民法院\",\"C_BUESINESSENTITY\":\"李国华\",\"N_PARTY_TYPE_NAME\":\"\",\"D_DATA_DATE\":\"20190816\",\"UNPERFORM_PART\":\"\",\"N_AGE\":\"0\",\"PERFORMED_PART\":\"\",\"C_PERFORMANCE\":\"全部未履行\",\"D_REG_DATE\":\"20080902\",\"DUTY\":\"\",\"C_INAME\":\"79757239202-0\",\"D_PUBLISH_DATE\":\"20150106\",\"C_CARDNUM\":\"\",\"C_DISREPUT_TYPE_NAME\":\"其他有履行能力而拒不履行生效法律文书确定义务\",\"C_COURT_NAME\":\"上海市浦东新区人民法院\",\"N_AREA_ID\":672,\"C_GIST_CID\":\"(2008)沪法执字第01109号\"}]}],\"return_code\":\"0000\",\"CODE\":\"02-000-203-0000\"},\"sign\":\"H8ESG0qXjYqZaA+rVcY0akVItL74kP11Mb2N4ZaABqL6/FZhU4HfxxKnn9NKU/DDbuIms7Udc89hqmWCzUMDIgKmbisvqimIddjj1RcLNEtiIxgbSwbCmb1KeEFw9gSZiS+7T6kzA86LuFw1IlJRIxU3DBxPzArY88+6RyZmyBQ=\"}";
c#中string字符串转为json与json转对象
添加引用,Newtonsoft.Json.dll
using Newtonsoft.Json.Linq;
1 //字符串转json
2 public static void strJson()
3 {
4 string jsonText = "{"shenzheng":"深圳","beijing":"北京","shanghai":[{"zj1":"zj11","zj2":"zj22"},"zjs"]}";
5
6 JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);//或者JObject jo = JObject.Parse(jsonText);
7 string zone = jo["shenzheng"].ToString();//输出 "深圳"
8 string zone_en = jo["shanghai"].ToString();//输出 "[{"zj1":"zj11","zj2":"zj22"},"zjs"]"
9 string zj1 = jo["shanghai"][1].ToString();//输出 "zjs"
10 Console.WriteLine(jo);
11 }
1 //对象与数组转JSON
2 public static void GetJsonString()
3 {
4 //初始化对象
5 Obj product = new Obj() { Name = "苹果", Price = 5.5 };
6 //序列化
7 string o = new JavaScriptSerializer().Serialize(product);//值:"{\"Name\":\"苹果\",\"Price\":5.5}"
8
9 //数组转json
10 List<Obj> products = new List<Obj>(){
11 new Obj(){Name="苹果",Price=5.5},
12 new Obj(){Name="橘子",Price=2.5},
13 new Obj(){Name="干柿子",Price=16.00}
14 };
15
16 ProductList productlist = new ProductList();
17 productlist.GetProducts = products;
18 //序列化
19 string os = new JavaScriptSerializer().Serialize(productlist);
20 //输出 "{\"GetProducts\":[{\"Name\":\"苹果\",\"Price\":5.5},{\"Name\":\"橘子\",\"Price\":2.5},{\"Name\":\"干柿子\",\"Price\":16}]}"
21 }
22
23 //json转对象、数组, 反序列化
24 public static void JSONStringToList()
25 {
26
27 //json格式字符串
28 string JsonStr = "{Name:''苹果'',Price:5.5}";
29 JavaScriptSerializer Serializer = new JavaScriptSerializer();
30
31 //json字符串转为对象, 反序列化
32 Obj obj = Serializer.Deserialize<Obj>(JsonStr);
33 Console.Write(obj.Name + ":" + obj.Price + "\r\n");
34
35 //json格式字符串
36 string JsonStrs = "[{Name:''苹果'',Price:5.5},{Name:''橘子'',Price:2.5},{Name:''柿子'',Price:16}]";
37
38 JavaScriptSerializer Serializers = new JavaScriptSerializer();
39
40 //json字符串转为数组对象, 反序列化
41 List<Obj> objs = Serializers.Deserialize<List<Obj>>(JsonStrs);
42
43 foreach (var item in objs)
44 {
45 Console.Write(item.Name + ":" + item.Price + "\r\n");
46 }
47 }
CSS中的url()到底要不要加引号
如:url(images/background.gif)和 url("images/background.gif") 从安全角度来讲是要加上的 否则容易被xss 因为""意味着是字符串...但是不加引号的话..传过来的万一是);url("")就把cookie什么的可能泄露出去了
fastJson json转对象时发生异常
前几天使用fastJson时发生了异常,现将问题记录下来
问题背景:下载模块将下载任务数据和下载返回的页面数据放在一起,使用fastjson转成json存入redis中。web模块从redis里取数据,使用fastjson再转成对象
异常报错:com.alibaba.fastjson.util.IoUtils.decodeBase64(IoUtils.java:496)
问题分析:因为json里存放着HTML代码,可能出现一些扰乱字符
解决方法:将html作为string存放在单独的redis里,web从该redis里取html
关于swift到底要不要json转对象和swift json转model的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于C# json转对象、c#中string字符串转为json与json转对象、CSS中的url()到底要不要加引号、fastJson json转对象时发生异常的相关知识,请在本站寻找。
本文标签: