关于这几种语言的json 操作

Lua

local cjson2 = require "cjson"
local lua_object = {
["name"] = "Jiang",
["age"] = 24,
["addr"] = "BeiJing",
["email"] = "1569989xxxx@126.com",
["tel"] = "1569989xxxx"
}
local tmp = cjson2.encode(lua_object)
print(obj["age"])
function Utils:ParseJson( json )
if not json or #json < 2 then--两端{}
return
end
local err,data = pcall(function(json)return cjson.decode(json)end,json);
if err == false then
data = nil;
end return data;
end

C#  JsonUtility

class Person {
public int age;
public string name;
} private void Awake(){
Person p = new Person();
p.age = 20;
p.name = "zhang san";
string json = JsonUtility.ToJson(p, true);
Debug.Log(json);
var re = JsonUtility.FromJson<Person>(json);
Debug.Log(re.age.ToString() + "-------------------");
}

//如果json的key比对象的字段多也可以正常解析
//string json = "{\"addr\": \"BeiJing\",\"tel\": \"1569989xxxx\",\"age\": 24,\"name\": \"Jiang\",\"email\": \"1569989xxxx@126.com\"}";

C#  Newtonsoft.Json 上面的如果lua 加了个字段给java,在C#有使用能解析(主要是要申明一个类,其实如果需求在这里变了,改C#不能热更,策划应该能接受)

Newtonsoft是比较原始的字典,不用声明一个类

        Dictionary<string, object> dic = new Dictionary<string, object>();
dic["age"] = 25;
dic["name"] = "张三";
var item = JsonConvert.SerializeObject(dic);
Debug.Log(item); var tmp = JsonConvert.DeserializeObject<Dictionary<string, object>>(item);
Debug.Log(tmp["name"].ToString());

Java In Android   import org.json.JSONObject

        try{
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("name","zhangsan");
jsonObject1.put("age",12);
String tmp = jsonObject1.toString();
Log.i("LogLogLog",tmp);
JSONObject js2 = new JSONObject(tmp);
String name = js2.getString("name");
Log.i("namenamenamename",name);
} catch (Exception e) { }
JSONObject jsonObject = new JSONObject(str);
Iterator<String> it = jsonObject.keys();
while(it.hasNext()){
// 获得key
String key = it.next();
String value = jsonObject.getString(key);
System.out.println("key: "+key+",value:"+value);}

Object-C In iOS

+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString
{
if (jsonString == nil) {
return nil;
} NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if(err)
{
NSLog(@"json解析失败:%@",err);
return nil;
}
return dic;
}
+ (NSString *)jsonStringWithDict:(NSDictionary *)dict {
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString;
if (!jsonData) {
NSLog(@"%@",error);
}else{
jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
}
return jsonString;
}

这样再也不怕用户取一些怪名字了。

在C#编辑器中 直接书写json

        string json = @"{""succ"":true,""content"":""hah""}";
Dictionary<string, object> jDic = MiniJSON.Json.Deserialize(json) as Dictionary<string, object>; Debug.Log(jDic["succ"]);
Debug.Log(jDic["content"]);

Java 中编写

String json = "{\"succ\":true,\"content\":\"hah\"}";

Log.e("json",json);

OC中编写

NSString  *json = @"{\"succ\":true,\"content\":\"hah\"}"

  在Unity 中使用Json 各种的复杂的类型都是支持的 不支持字典类型  Dictionary<>

using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Web;
using UnityEngine;
using UnityEngine.Networking; public class LearnSharp : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{ string json = @"{
""d"": ""dfff"",
""album"": {
""cc"": ""cc"",
""name"": ""The Dark Side of the Moon"",
""artist"": ""Pink Floyd"",
""year"": 1973,
""tracks"": [
""Speak To Me"",
""Breathe"",
""On The Run""
],
""tt"": ""tt"",
""tracksOb"": [{
""trackOb"": ""11"",
""trackObddf"": ""11""
},
{
""trackOb"": ""22""
}
],
""bb"": ""bb""
}
}";
var obj = GetData2<Root>(json); Debug.Log(obj.ToString());
} public static T GetData2<T>(string text) where T : class
{
//JsonData table = AnalysisJson.Analy<JsonData>(text);
T t = JsonUtility.FromJson<T>(text);
return t;
}
} [Serializable]
public class TracksObItem
{
public string trackOb;
public string newVar;
public override string ToString()
{
string name = "";
return $"{trackOb} {trackOb} ";
} public void OnDeserialization(object sender)
{
Debug.Log("OnDeserialization");
} } [Serializable]
public class Album
{
public string cc;
public string name;
public string artist;
public int year;
public List<string> tracks;
public string tt;
public List<TracksObItem> tracksOb;
public string bb;
} [Serializable]
public class Root
{
public string d;
public Album album; public override string ToString()
{
string name = "";
return $"{d} {album.name} {album.tracks[1]} {album.tracksOb[1].trackOb} {album.tracksOb[1].newVar}";
}
}

  这个是例子,感觉功能很强大。数组多层嵌套都支持。

                  

关于数据传递 json的更多相关文章

  1. 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

      先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面 ...

  2. 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

    摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来 ...

  3. Ajax传递json数据简介和一个需要注意的小问题

    Ajax传递json数据 Ajax操作与json数据格式在实际中的运用十分广泛,本文为大家介绍一个两者相结合的小案例: 项目结构 我们新建一个Django项目,在里面创建一个名为app01的应用: p ...

  4. boke例子: freermarker:在使用ajax传递json数据的时候多出冒号

    boke例子: freermarker:在使用ajax传递json数据的时候多出冒号 json数据是用JSON.stringify()格式化的数据,然后用ajax传递,发现数据多出一个冒号:, 后来度 ...

  5. JAVA接口传递参数(POST),从接口接收数据(JSON) -----记录

    1,给接口传递json格式的数据 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOEx ...

  6. go http 传递json数据

    上篇博文中简单介绍了Go HTTP的Server 和Client.本文介绍如何在HTTP中传递json格式的数据. Server package main import ( "encodin ...

  7. express后端和fetch前端的json数据传递

    在使用express做后端,前端使用fetch API来请求后端时,一般都是用 JSON 数据进行通信的. 下面是一个简单的例子: 前端: if (up) { var passwordAgain = ...

  8. URL中传递JSON数据

    有关于JSON如何在前后之间进行传递,转换成对象等操作,请查看  C#Json数据交互   (这篇文章主要介绍了如何转化Json格式的数据,以及如何使用) 我们在URL中传递数据一般都是 XX.asp ...

  9. 利用AXIS2传递JSON数据

    Axis2是目前比较流行的WebService引擎.WebService被应用在很多不同的场景.例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用.这样可以 ...

  10. 用easyui从servlet传递json数据到前端页面的两种方法

    用easyui从servlet传递json数据到前端页面的两种方法 两种方法获取的数据在servlet层传递的方法相同,下面为Servlet中代码,以查询表中所有信息为例. //重写doGet方法 p ...

随机推荐

  1. prometheus Alertmanager webhook

      一.自定义邮件告警 二.使用docker部署微信机器人告警 1.制作镜像 2.启动容器和指定webhook容器 一.自定义邮件告警 在alertmanager服务的配置文件中指定自定义告警文件 # ...

  2. Shell-通过expect工具脚本的自动交互及实例

    安装expect工具 expect是建立在tcl基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信. 其交互流程是: spawn启动指定进程 -> e ...

  3. 一 MySQL的架构与历史1.1--1.4

    1.1 MySQL逻辑架构 最上层的服务并不是 MySQL 所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构.比如连接处理.授权认证.安全等等. 第二层架构是MySQL比较有意思的 ...

  4. 多线程学习(第二天)Java内存模型

    一.内存模型基础 Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明. 如果编写多线程程序的Java程序员不理解隐式进行的线程之间通信的工作机制,很可 ...

  5. linux 修改PATH 环境变量

    [root@localhost ~]# echo $PATH [root@localhost ~]# vim /etc/profile 最后一行加上 export PATH=****/bin:$PAT ...

  6. C++ NRV优化

    NRV,named return value 某个函数返回一个对象时,在外部接收 A a = Fun(); 会调用复制构造函数 会损失性能 为何不能将函数Fun定义成传入引用a,然后直接在a上进行操作 ...

  7. HTML图片上传实时预览js

    <style>*{margin:0; padding:0;}form{background:#F1F1F1;}.bbg{background:url(../images/add_ico.j ...

  8. el-input 限制输入框只能输入数字和小数

    方法一: oninput ="value=value.replace(/[^\d]/g,'')" //只能输入数字 oninput ="value=value.repla ...

  9. node_exporter安装

    1.node_exporter下载 node_exporter-1.3.1.linux-amd64.tar.gz tar -xzvf node_exporter-1.3.1.linux-amd64.t ...

  10. 时间序列 data_range()

    pd.date_range( start=None,#开始时间 end=None,#截止时间 periods=None,#总长度 freq=None,#时间间隔 tz=None,#时区 normali ...