GVKun编程网logo

swift到底要不要json转对象(swift json转model)

22

在这篇文章中,我们将为您详细介绍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)

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转对象

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="
}
View Code

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; }
    }
View Code

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; }
        }
    }
}
View Code

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=\"}";
View Code

 

c#中string字符串转为json与json转对象

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()到底要不要加引号

CSS中的url()到底要不要加引号

如:url(images/background.gif)和 url("images/background.gif") 从安全角度来讲是要加上的 否则容易被xss 因为""意味着是字符串...但是不加引号的话..传过来的万一是);url("")就把cookie什么的可能泄露出去了

fastJson json转对象时发生异常

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转对象时发生异常的相关知识,请在本站寻找。

本文标签: