Unity读写Json文件

Unity读写Json文件,第1张

方法一 直接传结构体与保持文件名字

  public void WriteJson(object ob, string jsonName)

    {

        string json = LitJson.JsonMapper.ToJson(ob)

        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(json)

        string filePath = Application.dataPath + "/Resources/" + jsonName + ".json"

        using (System.IO.FileStream stream = new System.IO.FileStream(filePath, System.IO.FileMode.Create))

        {

            stream.Write(bytes, 0, bytes.Length)

        }

        UnityEditor.AssetDatabase.Refresh()//属性Asset,生成完成后立刻可以看到文件

    }

方法二 jsonwriter 半编译写法

  void CreateJson()

    {

        string path = Application.dataPath + "/Resources/Jsons/" + objBase.transform.name + ".json"

        FileInfo fileInfo = new FileInfo(path)

        StreamWriter sw = fileInfo.CreateText()

        StringBuilder sb = new StringBuilder()

        JsonWriter jsonwriter = new JsonWriter(sb)

        jsonwriter.WriteObjectStart()//1

        for (int i = 0i <numbers.Counti++)

        {

            jsonwriter.WritePropertyName("Number" + (i + 1))

            jsonwriter.WriteObjectStart()//1-1

            type = new List<Transform>()

            foreach (Transform child in numbers[i].transform)

                type.Add(child)

            jsonwriter.WritePropertyName("TypeCount")jsonwriter.Write(type.Count)

            for (int j = 0j <type.Countj++)

            {

                jsonwriter.WritePropertyName("Type" + (j + 1))

                jsonwriter.WriteObjectStart()//1-1-1

                pos = new List<Transform>()

                foreach (Transform child in type[j].transform)

                    pos.Add(child)

                jsonwriter.WritePropertyName("Size")jsonwriter.Write(pos[0].transform.localScale.x.ToString())

                jsonwriter.WritePropertyName("Pos")

                jsonwriter.WriteArrayStart()

                for (int k = 0k <pos.Countk++)

                {

                    jsonwriter.Write("(" + pos[k].transform.localPosition.x + "," + pos[k].transform.localPosition.y + ")")

                }

                jsonwriter.WriteArrayEnd()

                jsonwriter.WriteObjectEnd()//1-1-1

            }

            jsonwriter.WriteObjectEnd()//1-1

        }

        jsonwriter.WriteObjectEnd()//1

        sw.WriteLine(sb.ToString())

        sw.Close()

        AssetDatabase.Refresh()

    }

Json 里面的数据是double 类型,使用float 会出问题

double.Parse  float .Parse    不一样

好的,boost写json去掉引号是指使用boost库来编写json文件,并且去掉引号。要完成这个任务,首先需要安装boost库,然后使用boost库的json类来编写json文件,并且在编写的过程中去掉引号。

安装boost库的方法是,首先从官网下载boost库,然后解压缩,把解压后的文件夹放到指定的位置,然后在命令行中运行bootstrap.bat文件,最后运行b2.exe文件,这样就可以安装boost库了。

使用boost库的json类来编写json文件,首先需要引入boost库的头文件,然后创建一个json对象,然后使用json对象的add_member函数来添加json元素,最后使用json对象的write函数来写入json文件,这样就可以编写json文件了。

在编写的过程中去掉引号,可以使用boost库的string_ref类来实现,首先创建一个string_ref对象,然后使用string_ref对象的remove_quotes函数来去掉引号,最后使用string_ref对象的to_string函数来获取去掉引号后的字符串,这样就可以去掉引号了。

1、JSON基于JavaScript对象字面量

所谓字面量,是对数据值的具体表示。它的字面意思与其想要表达的意思是完全一致的。

2、名称-值对

计算机世界里,名称-值对也被称为键-值对、属性-值对或字段-值对,它们都表示一个意思。

3、正确的JSON语法

示例:

4、JSON文件使用.json 拓展名

5、JSON媒体类型是application/json

1、对象数据类型

JSON中的对象数据类型非常简单。追根溯源,JSON本身就是对象,也就是被花括号包裹的名称-值对的列表。对象可以嵌套。

2、字符串类型

简单的字符串类型,比如前面提到的"cat"我就不多说了 ,下面重点讲一下稍微复杂一点的。在这之前,我觉得有必要说一下解析器是如何读JSON

的。对于解析器来说,当一个值以双引号(")开始时,它希望接下来的字符串文本以另一个双引号结尾。这意味着这段字符串本身包含

双引号可能会出错。我不知道你是否理解我的意思,我们看一个例子吧:

3、数字类型

4、布尔类型

5、null类型

6、数组类型

JSON中的数组类型呢也是一个比较重要的类型,上面用的不多的我就不细说,你记住就好。废话不多说,先来看一个例子吧:

1、跨站请求伪造CSRF:

拓展一下:

顶层JSON数组指存在于JSON名称-至对之外的位于文档最顶层的JSON数组

2、跨站脚本攻击XSS

3、安全漏洞:决策上的失误


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/6079685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存