unity请求json数据并解析

a 夏天 提交于 2019-11-27 18:31:04

unity3d在跟.net进行http通信的时候,最常见的就是表单数据的提交请求了,但服务器端会返回一坨json数据,这就要求我们在unity中进行json数据的处理了,一般unity中处理json个数数据用的最多的就是LitJSON(它是.net平台下处理SON数据库的类库)。下面我就贴出源码,仅供学习参考!

关于LitJSON的安装和使用,请参考:http://www.360doc.com/content/13/0117/11/10941785_260686840.shtml

或者参考:http://blog.csdn.net/dingxiaowei2013/article/details/17115665


将LitJson.dll放在assets目录下的plugins文件下,如果没有plugins文件就手动创建一个


Client:

  1. using UnityEngine;  
  2. using System.Collections;  
  3. using LitJson;  
  4.   
  5. public class GetPhotoList : MonoBehaviour {  
  6.   
  7.     // Use this for initialization  
  8.     void Start () {  
  9.         StartCoroutine(GetPhotos());  
  10.     }  
  11.       
  12.     // Update is called once per frame  
  13.     IEnumerator GetPhotos(){      
  14.         WWWForm    form = new WWWForm();  
  15.         form.AddField("id","123");  
  16.         WWW w = new WWW("http://localhost:36944/GetPhotoList.ashx",form);  
  17.         while (!w.isDone){yield return new WaitForEndOfFrame();}  
  18.         if (w.error != null){Debug.LogError(w.error);}  
  19.         Debug.Log(w.text);          
  20.         JsonData jd = JsonMapper.ToObject(w.text);  
  21.         for (int i = 0; i < jd.Count; i++)  
  22.         {              
  23.             Debug.Log("id=" + jd[i]["id"]);  
  24.             Debug.Log("name=" + jd[i]["name"]);  
  25.         }  
  26.           
  27.     }  
  28. }  

Server:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Runtime.Serialization.Json;  
  6. using System.ServiceModel;  
  7. using System.ServiceModel.Web;  
  8. using System.IO;  
  9.   
  10. namespace UpdatePhoto  
  11. {  
  12.     /// <summary>  
  13.     /// GetPhotoList 的摘要说明  
  14.     /// </summary>  
  15.     public class GetPhotoList : IHttpHandler  
  16.     {  
  17.   
  18.         public void ProcessRequest(HttpContext context)  
  19.         {  
  20.             context.Response.ContentType = "text/plain";  
  21.             string id = context.Request.Form["id"];  
  22.             string path = context.Request.PhysicalApplicationPath;  
  23.             //context.Response.Write("Hello World");  
  24.             List<Photo> photos = GetPhotos(id,path);  
  25.             DataContractJsonSerializer djson = new DataContractJsonSerializer(photos.GetType());  
  26.             djson.WriteObject(context.Response.OutputStream, photos);  
  27.         }  
  28.   
  29.         public List<Photo> GetPhotos(string id,string path)  
  30.         {  
  31.             //获取目录  
  32.             string localPath = path+id + "\\";   
  33.             //读取目录下的文件  
  34.             if (!Directory.Exists(localPath)) return null;  
  35.             string[] files = Directory.GetFiles(localPath);  
  36.             List<Photo> photos = new List<Photo>();  
  37.             foreach (string file in files)  
  38.             {  
  39.                 string filename = file.Substring(file.LastIndexOf('\\')+1);  
  40.                 Photo p = new Photo();  
  41.                 p.name = filename;  
  42.                 p.id = id;  
  43.                 photos.Add(p);  
  44.             }  
  45.   
  46.   
  47.             return photos;  
  48.         }  
  49.   
  50.         public bool IsReusable  
  51.         {  
  52.             get  
  53.             {  
  54.                 return false;  
  55.             }  
  56.         }  
  57.     }  
  58.   
  59.     public class Photo  
  60.     {  
  61.         public string id;  
  62.         public string name;  
  63.     }  
  64. }  
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!