关于unity LitJson 小结

代码拼json 使用@,转义符失效,

 string obstacle = @"
{""value"":{
        ""object_count"":2,
        ""object_list"":[
            {
                ""classification"":1,
                ""reference_point"":{""x"":1.3, ""y"":2.1, ""z"":0.0},
                ""object_box_center"":{""x"":1.2, ""y"":2.1, ""z"":0.0},
                ""object"":[
                    {""x"":1.2, ""y"":2.1, ""z"":3.1},
                    {""x"":1.3, ""y"":2.2, ""z"":3.2},
                    {""x"":1.4, ""y"":2.3, ""z"":3.3},
                    {""x"":1.4, ""y"":2.3, ""z"":3.3}
                ],
                ""linear"":{""x"":1.2, ""y"":2.1, ""z"":3.1}
            },
            {
                ""classification"":2,
                ""reference_point"":{""x"":-8.5, ""y"":2.1, ""z"":0.0},
                  ""object_box_center"":{""x"":-8.5, ""y"":2.1, ""z"":0.0},
                ""object"":[
                    {""x"":1.2, ""y"":2.1, ""z"":3.1},
                    {""x"":1.3, ""y"":2.2, ""z"":3.2},
                    {""x"":1.4, ""y"":2.3, ""z"":3.3},
                    {""x"":1.4, ""y"":2.3, ""z"":3.3}
                ],
                ""linear"":{""x"":-8.5, ""y"":2.1, ""z"":3.1}
            }
        ]
    }
}";

 

实例解析方法:

 try
        {
                      JsonData jd = JsonMapper.ToObject(obstaclesJson);
            for (int i = 0; i < jd["value"]["object_list"].Count; i++)
            {
                int type = (int)jd["value"]["object_list"][i]["classification"];
                Vector3 refer = new Vector3((float)(double)jd["value"]["object_list"][i]["reference_point"]["x"], (float)(double)jd["value"]         ["object_list"][i]["reference_point"]["y"], (float)(double)jd["value"]["object_list"][i]["reference_point"]["z"]);
                Vector3 center = new Vector3((float)(double)jd["value"]["object_list"][i]["object_box_center"]["x"], (float)(double)jd["value"]["object_list"][i]["object_box_center"]["y"], (float)(double)jd["value"]["object_list"][i]["object_box_center"]["z"]);
               
            }

        }
        catch (System.Exception e)
        {
            Debug.Log("-->RefreshObstacles()" + e.ToString());
        }

======================================================================================================

c# @常见用法:

1.限定字符串

用 @ 符号加在字符串前面表示其中的转义字符“不”被处理。

如果我们写一个文件的路径,例如"D:/文本文件"路径下的text.txt文件,不加@符号的话写法如下:

string fileName = "D://文本文件//text.txt";

如果使用@符号就会比较简单:

string fileName = @"D:/文本文件/text.txt";

2.让字符串跨行

有时候一个字符串写在一行中会很长(比如SQL语句),不使用@符号,一种写法是这样的:

string strSQL = "SELECT * FROM HumanResources.Employee AS e"    + " INNER JOIN Person.Contact AS c"    + " ON e.ContactID = c.ContactID"    + " ORDER BY c.LastName";

加上@符号后就可以直接换行了:

string strSQL = @"SELECT * FROM HumanResources.Employee AS e    INNER JOIN Person.Contact AS c    ON e.ContactID = c.ContactID    ORDER BY c.LastName";

3.在标识符中的用法

C#是不允许关键字作为标识符(类名、变量名、方法名、表空间名等)使用的,但如果加上@之后就可以了,例如:

namespace @namespace...{class @class...{publicstaticvoid @static(int @int)...{if (@int > 0)...{                System.Console.WriteLine("Positive Integer");            }elseif (@int == 0)...{                System.Console.WriteLine("Zero");            }else...{                System.Console.WriteLine("Negative Integer");            }        }    }}

 

C#中的@符号的使用及注意事项

编程中很多细节问题我们都要十分的注意,要不一个小小的字母错误就能引起程序的无法运行,我自己就经历过这样的事情,对于编程中应该注意的问题,我们要经常的收集整理自己的一本手册,今天我们来讲下C#中的@符号的使用及注意事项。

  一 字符串中的用法

  字符@表示,其后的字符串是个“逐字字符串”(verbatim string)。

  @只能对字符串常量作用。

  1.用于文件路径

以下是引用片段:  string s_FilePath ="C:\\Program Files\\Microsoft.NET\\test.txt";

相当于

以下是引用片段:  string s_FilePath =@"C:\Program Files\Microsoft.NET\test.txt";

    2.用@表示的字符串能够跨越数行。用于在CS中写JS或SQL代码比较方便。

以下是引用片段:  string s_MultiRows = @"Line1   Line2   Line3";   string s_JavaScript = @"   ";

 二 标识符中的用法

  在 C# 规范中, @ 可以作为标识符(类名、变量名、方法名等)的第一个字符,以允许C# 中保留关键字作为自己定义的标识符。

  如

以下是引用片段:  class @class   {   public static void @static(bool @bool) {   if (@bool)   System.Console.WriteLine("true");   else   System.Console.WriteLine("false");   }   }   class Class1   {   static void M() {   clu0061ss.stu0061tic(true);   }   }

  注意,@ 虽然出现在标识符中,但不作为标识符本身的一部分。

  因此,以上示例,定义了一个名为 class 的类,并包含一个名为 static 的方法,以及一个参数名为了 bool 的形参。

  这样,对于跨语言的移植带来了便利。因为,某个单词在 C# 中作为保留关键字,但是在其他语言中也许不是。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值