Json的学习例子

2023-11-16

using System;
using LitJson;
using System.Collections;

namespace JSON
{
    /// <summary>
    /// 学习JSON的代码,首先引用LitJson外部文件
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            json();//测试Json的基本用法
            writeClassleo();//类属性与Json的互相转换
            writeJson();//书写一个Json格式的文本
        }

        static void json()
        {
            string JsonDate = "{'name':'leo','weight':50,'IsMarry':false,'like':['sport','编程','draw',{'wife':55}],'mywife':{'first':'Mary','SheAge':18}}";//用字符串的形式存储一个键值文件
            JsonData AllInfo = JsonMapper.ToObject(JsonDate);//把字符串数据转成json键值队数据,这里面包含多个键值队数据

            string A = JsonMapper.ToJson(AllInfo);//已经全部转换成Jsondate的AllInfo,反过来转换成字符串

            //那么上面两句就是,Json(仅指特定格式的字符串文本)和jsondate的相互转换

            Console.WriteLine(A);



            if (AllInfo["name"].IsString)//通过键值的名字拿到相应的键值队,判断这个JsonDate是不是字符串
            {
                Console.WriteLine("我的名字是 : {0}", (string)AllInfo["name"]);
            }
            JsonData wife = AllInfo["mywife"];//通过键值名字拿到其中一个键值队,这个键值队里面还包含了一个键值队赋值给一个变量
            if (wife["first"].IsString)//判断这个键值中的数值类型是不是字符串的
            {
                Console.WriteLine("我的第一个老婆,\n她的名字是:{0}\n她的年龄是:{1}", (string)wife["first"], (int)wife["SheAge"]);     //输出的时候把相应的数值转成相应的类型输出用这个键值队名称【】写上键名      
            }
            JsonData like = AllInfo["like"];
            if (like.Count > 0)//数组中放的是值,用索引号 拿到每个值
            {
                Console.WriteLine("我的爱好是 : {0}", (string)like[1]);//用索引号指向这个数组型的键值队中的某个值
            }
        }//end json
        static void writeClassleo()//把一个类中的属性写成一个json 键值队的形式,然后读取
        {
            //实例化要读的那个类
            leo my = new leo();
            //my.LEOList.Add("sucess");


            string writeleo = JsonMapper.ToJson(my);//这个是把类里面定义的属性变量转成一个JSON键值队格式的,纯文本,以便于通用
            Console.WriteLine(writeleo);
            JsonData C = JsonMapper.ToObject(writeleo);//这个是把键值队的文本格式转换成一个JSONdate的类型,【成功把文本转换成Jsondate】
            if (C["name"].IsString)
            {
                Console.WriteLine((string)C["name"]);
            }
            leo B = new leo();
            B = JsonMapper.ToObject<leo>(writeleo);//这个是把键值队json格式的字符串文本转换成类格式;前提是这个文本的内容必须是和类定义的属性对应;


            Console.WriteLine("一个Json格式的纯文本,转成类对象的变量:" + B.name);//拿到这个值
        }


        //下面的函数,创建一个Json格式的文本
        static void writeJson()//写一个这样的JSON{“leo”:{"leo1":[{"leo2":20]}}}
        {
            JsonWriter CreatJson = new JsonWriter();
            CreatJson.WriteObjectStart();//写上JSON的键值队对象的第一个“{”;
            CreatJson.WritePropertyName("leo");//写上对象的属性名
            CreatJson.WriteObjectStart();
            CreatJson.WritePropertyName("leo1");//写上对象的属性名
            CreatJson.WriteArrayStart();
            CreatJson.WriteObjectStart();
            CreatJson.WritePropertyName("leo2");//写上对象的属性名
            CreatJson.Write(20);
            CreatJson.WriteObjectEnd();
            CreatJson.WriteArrayEnd();
            CreatJson.WriteObjectEnd();
            CreatJson.WriteObjectEnd();//写上JSON的键值队对象的最后一个“}”;
            string A = CreatJson.ToString();//写好这个JSON键值队文本之后,存储在CreatJson中了,我要拿出来,用这个变量Tostring();方法,拿出来存在A中
            JsonData myCreat = JsonMapper.ToObject(A);//把JSON键值队转换成一个JSONDate 类型中去,按照变量【名字】来访问
            JsonData leo = myCreat["leo"];//拿到leo这个对象
            JsonData leo1 = leo["leo1"];
            JsonData leo2 = leo1[0];
            Console.WriteLine("终于拿到你:{0}", (int)leo2["leo2"]);


            Console.WriteLine(A);
            //Console.WriteLine(myCreat[leo]);
        }


    }//end classProgram


    class leo
    {
        public string name = "leo";
        public int age = 26;
        public string WifeName2 = "Mary";
        public int Wifeage2 = 18;
        public ArrayList LEOList = new ArrayList();
        public leo()
        {
            LEOList.Add("Mary3");
            LEOList.Add(18);
            //LEOList.Add(false);
            LEOList.Insert(2, "loveLeo");
        }
    }//一个单独的类,这里面有很多定义好的属性,用于让 JsonMapper.ToJson(my)把把类对象转化成一个JSON的字符串类型的键值队格式的文本。JsonMapper.ToObject<leo>(P)则可以把一个JSON的字符串类型的键值队格式的文本,存储到leo类的一个实例中去  
}//End namespace
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Json的学习例子 的相关文章

随机推荐

  • delete 和 delete []的真正区别

    c 中对new申请的内存的释放方式有delete和delete 两种方式 到底这两者有什么区别呢 1 我们通常从教科书上看到这样的说明 delete 释放new分配的单个对象指针指向的内存 delete 释放new分配的对象数组指针指向的内
  • ubuntu下解决wps2019缺少字体问题

    准备字体包 链接 https pan baidu com s 1rsqn3CY SWS KWaKc0w83g 提取码 h9cs 复制 解压后的wps symbol fonts zip到 home usr share fonts下 sudo
  • 西门子PLC—用 SCL 编写你的第一个 TIA 代码

    前言 使用梯形图编写程序时 博途编辑器是通过网络段 把程序分成一段一段的 编辑器可以插入若干个网络段 每一个网络段可以有各自的注释 而SCL是文本语言 不分网络段 在LAD FBD语言内增加SCL的除外 这就需要需要用其他的方法来 解决程序
  • 面试总结大全

    预定义变量 0 脚本名 所有的参数 所有的参数 参数的个数 当前进程的PID 上一个后台进程的PID 上一个命令的返回值 0表示成功 for 循环次数是固定的 for i in 取值 范围 1 20 zhangsan lisi wanger
  • 牛客网——华为题库(41~50)

    华为题库 41 称砝码 42 学英语 43 迷宫问题 44 Sudoku 45 名字的漂亮度 46 截取字符串 48 从单向链表中删除指定值的节点 50 四则运算 41 称砝码 include
  • C++通过回车结束循环输入

    试想一个案例 假设需要你输入n行数字 而每一行输入的数字数量都未知 不定 如何通过C 来实现这一操作 本贴笔者给出一个具体案例 首先规定输入的行数 而后在每一行输入不定量的数字 最后将每一个数字对应的值 以及与其匹配的行数输出 例如 输入
  • 实战07- 模型融合:利用AdaBoost元算法提高分类性能

    元算法 meta algorithm 是对其他算法进行组合的一种方式 即模型融合 模型融合主要分为三种 Bagging Boosting和Stacking 思想 将弱分类器融合成强分类器 融合后比最强的弱分类器更好 视频导学 https w
  • 什么是高防CDN,高防CDN是如何防御网络攻击的呢?

    高防CDN是一种新型的网络构建法式 N是构建在现有网络基础之上的智能虚拟网络 依靠部署在各地的边缘服务器 通过中心平台的负载均衡 内容分发 调度等功能模块 使用户就近获取所需内容 降低网络拥塞 提高用户访问响应速度和命中率 CDN的关键技术
  • tensorflow2.1.0安装

    原来一直用1 x的tf 最近安装2 初始源error无法安装 下载本地包后 换清华源之类的 channels defaults show channel urls true default channels https mirrors tu
  • 机器学习(一)

    文章目录 人工智能 人工智能的诞生 人工智能的发展历程 人工智能与机器学习的关系 机器学习 机器学习的发展历程 讨论 机器学习的必要性 机器学习的定义 机器学习的三要素 机器学习的基本概念 作业 人工智能 人工智能的诞生 人工智能诞生于一群
  • Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)

    一 简介 License 即版权许可证 一般用于收费软件给付费用户提供的访问许可证明 根据应用部署位置的不同 一般可以分为以下两种情况讨论 应用部署在开发者自己的云服务器上 这种情况下用户通过账号登录的形式远程访问 因此只需要在账号登录的时
  • python机器学习相关的操作 numpy,GridSearchCV(网格搜索)等

    numpy切片操作 视频讲解 numpy 简单入门 GridSearchCV的简单使用视频讲解 SVM参数优化 metrics中的precision score recall score accuracy score import nump
  • C语言中的system有什么作用,C语言中system函数的使用

    System 是c语言中为了调用windows系统命令来设置的 它包含在头文件 include中 具体的使用可以在system help 后发现帮助命令 命令如下 有关某个命令的详细信息 请键入 HELP 命令名 ASSOC 显示或修改文件
  • python语言通过neo4j构建知识图谱

    用python语言通过neo4j构建知识图谱 安装neo4j社区版 启动neo4j neo4j语法 python编写代码 结果 注意 可能遇到的问题 安装neo4j社区版 下载neo4j 安装相应版本jdk 例 jdk15 neo4j4 2
  • CentOS自动挂载光驱

    今天在CentOs下安装测试数据库 光驱居然找不到了 以前都是自动就能找到的 服务器上也是CentOs 开发库也在CentOs 没出现过这个问题 虽然知道linux一直都有这个问题 改用手动挂载 报以下错误 mount can t find
  • 用宏定义字节对齐

    有时候我们需要对一个数字节对齐 实例代码 include
  • 左神算法进阶班4_3异或和为0划分最多数组

    题目 定义数组的异或和的概念 数组中所有的数异或起来 得到的结果叫做数组的异或和 比如数组 3 2 1 的异或和是 3 2 1 0 给定一个数组arr 你可以任意把arr分成很多不相容的子数组 你的目的是 分出来的子数组中 异或和为0的子数
  • Nikolaj Buhl : Segment Anything 模型 (SAM) 解释

    文章目录 Meta 的人工智能和计算机视觉简史 计算机视觉的进展 卷积神经网络 CNN 生成对抗网络 GAN 迁移学习和预训练模型 基础模型的成长 大规模语言模型 迁移学习 零样本和少样本学习 多模态学习 道德考量和安全 将 Segment
  • 德鲁伊数据库连接池

    文章目录 前言 什么是德鲁伊 为什么要使用德鲁伊 如何在 Java 项目中使用德鲁伊连接池 德鲁伊的优缺点 总结 前言 德鲁伊 Druid 是一个非常流行的数据库连接池和性能优化工具 它用于管理数据库连接 监控数据库性能 提供连接池统计等功
  • Json的学习例子

    using System using LitJson using System Collections namespace JSON