[Unity3d]u3d请求json数据并解析

标签: litjsonunity json
4812人阅读 评论(0) 收藏 举报
分类:

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:

using UnityEngine;
using System.Collections;
using LitJson;

public class GetPhotoList : MonoBehaviour {

    // Use this for initialization
    void Start () {
        StartCoroutine(GetPhotos());
    }
    
    // Update is called once per frame
    IEnumerator GetPhotos(){    
        WWWForm    form = new WWWForm();
        form.AddField("id","123");
        WWW w = new WWW("http://localhost:36944/GetPhotoList.ashx",form);
        while (!w.isDone){yield return new WaitForEndOfFrame();}
        if (w.error != null){Debug.LogError(w.error);}
        Debug.Log(w.text);        
        JsonData jd = JsonMapper.ToObject(w.text);
        for (int i = 0; i < jd.Count; i++)
        {            
            Debug.Log("id=" + jd[i]["id"]);
            Debug.Log("name=" + jd[i]["name"]);
        }
        
    }
}

Server:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization.Json;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.IO;

namespace UpdatePhoto
{
    /// <summary>
    /// GetPhotoList 的摘要说明
    /// </summary>
    public class GetPhotoList : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string id = context.Request.Form["id"];
            string path = context.Request.PhysicalApplicationPath;
            //context.Response.Write("Hello World");
            List<Photo> photos = GetPhotos(id,path);
            DataContractJsonSerializer djson = new DataContractJsonSerializer(photos.GetType());
            djson.WriteObject(context.Response.OutputStream, photos);
        }

        public List<Photo> GetPhotos(string id,string path)
        {
            //获取目录
            string localPath = path+id + "\\"; 
            //读取目录下的文件
            if (!Directory.Exists(localPath)) return null;
            string[] files = Directory.GetFiles(localPath);
            List<Photo> photos = new List<Photo>();
            foreach (string file in files)
            {
                string filename = file.Substring(file.LastIndexOf('\\')+1);
                Photo p = new Photo();
                p.name = filename;
                p.id = id;
                photos.Add(p);
            }


            return photos;
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

    public class Photo
    {
        public string id;
        public string name;
    }
}


==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013              MyQQ:1213250243

MyTel:13262983383 

====================== 相互学习,共同进步 ===================


15
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1657888次
    • 积分:21568
    • 等级:
    • 排名:第382名
    • 原创:416篇
    • 转载:215篇
    • 译文:3篇
    • 评论:421条
    关于我
    我叫小未,网名Aladdin,主做U3D游戏程序,不甘于平庸,喜欢尝试,喜欢研究计算机技术,13年9月份开始工作,曾两年就职于巨人网络做游戏客户端程序,闲暇时间做过麦子学院在线讲师,做过独立开发,做过C#游戏服务器和.NET Web服务器,做过IOS原生开发,爱游戏,爱coding!

    邮件:1213250243@qq.com
    QQ交流
    Git仓库
    新浪围脖
    博客专栏
    最新评论