有时候需要将数据转化成Json,上传到服务器。
用JsonUtility.ToJson(data) 即可转化。
我遇到的情况是,需要将两个参数及其值转成Json,转化效果如下:
{“sentence”:“Hello World”,“denoise”:true}
那就要先将两个参数赋值存在一个变量里再转化。
看到两种方法,记录一下。
一、通过自定义类
写个类ReqData,声明变量。变量就是我们要转化成Json的key
public class ReqData
{
public string sentence;
public bool denoise;
}
在另一个类中,实例化ReqData类,并赋值,值就是Json的value。
通过JsonUtility.ToJson() 将ReqData的实例转化成Json。
ReqData data = new ReqData(); //实例化
data.sentence = "Hello World"; //赋值
data.denoise = true;
//将数据转换为json字符串
var jsonstring = JsonUtility.ToJson(data);
二、通过能存储键值对的类
Dictionary或Hash。Dictionary每个元素的键值类型都要一致。Hash不必。
1、Dictionary
Dictionary
mydata["sentence"] = "Hello World";
mydata["denoise"] = "true"; //都要string类型
//将数据转换为json字符串
var jsonstring = JsonUtility.ToJson(mydata);
如果各元素的值类型不一样,使用Dictionary,也许不可行。那就用hash吧。
2、Hash
不懂为何要这样使用Hash,参考: unity通过http获取和发送json数据
var mydata = new Boo.Lang.Hash();
mydata["sentence"] = "Hello World";
mydata["denoise"] = true; //不需要和其他值的类型一样
//将数据转换为json字符串
var jsonstring = JsonUtility.ToJson(mydata);
番外篇:上传到服务器
上图是要上传的内容。
除了上传转化成Json的这两个参数,还上传了个音频文件。
以下是完整代码。
using System.Collections;
using UnityEngine;
using System.IO;
using UnityEngine.UI;
public class Voicetest : MonoBehaviour {
public string API = @"http://***";
public Text myText;
public string soundPath = @"D:\sound.wav";
IEnumerator Start () {
byte[] sound = File.ReadAllBytes(soundPath); //文件转成字节数组
//参数赋值
var mydata = new Boo.Lang.Hash();
mydata["sentence"] = myText.GetComponent
mydata["denoise"] = true;
//将数据转换为json字符串
string jsonstring = JsonUtility.ToJson(mydata);
//绑定表单
var form = new WWWForm();
form.AddField("text", jsonstring);
form.AddBinaryData("wav", sound, "wav");
WWW www = new WWW(API, form);
//等待返回
yield return www;
if (string.IsNullOrEmpty(www.error))
{
Debug.Log("Result :" + www.text);
}
else
{
Debug.Log("ERROR" + www.error);
}
}
}
API:
AddBinaryData(string fieldName, byte[] contents);
AddBinaryData(string fieldName, byte[] contents, string fileName);
fieldName:表单的名称,fileName:文件上传到服务器后的文件名称
form.AddField("text", jsonstring);
form.AddBinaryData("wav", sound, "wav");
---------------------
作者:发狂怪蜀黍
来源:CSDN
原文:https://blog.csdn.net/zheng_1994/article/details/85151097
版权声明:本文为博主原创文章,转载请附上博文链接!