您的位置:首页 > 移动开发 > Unity3D

unity请求json数据并解析

2015-05-08 00:15 489 查看
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:

[csharp] view
plaincopyprint?





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:

[plain] view
plaincopyprint?





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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: