unity JSON 字符串数组从cUrl转化为对象
Unity JSON string array into objects from cUrl
我不确定如何完成此操作。我从这样的 www 请求中获得了一些用户:
Dictionary<string, string> headers = new Dictionary<string, string>();
headers.Add("Authorization", "Basic "+System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes("user*pass")));
WWW www = new WWW("https://somedomain.com:8000/users", null, headers);
yield return www;
Debug.Log(www.text);
调试returns这个:
[{"user_id":"ho896ty6","user_name":"Mikje Flanders","age":43},{"user_id":"ft357hj","user_name":"Anna Simpson","age":56}]
现在,我有这样一个对象:
public class userData
{
string user_id;
string user_name;
int age;
}
我想将数据放入其中,但不确定 json 何时为数组。我试过这样,但没有运气:
userData thisUser = JsonUtility.FromJson<userData>(www.text);
希望有人能帮我解决这个问题,在此先感谢:-)
你必须使用分隔符解析 Json,除非你在那种情况下使用 visual studio,检查你的 nuget 是否有 Newtonsoft.Json
安装了这个包你可以:
Using NewtonSoft.Json;
列表 udat = JsonConvert.DeserializeObject>(json);
foreach( userData data in udat){
//do something here to each item;
}
[
{
"user_id": "ho896ty6",
"user_name": "Mikje Flanders",
"age": 43
},
{
"user_id": "ft357hj",
"user_name": "Anna Simpson",
"age": 56
}
]
我稍微清理了你的代码,这样你就可以看到你在做什么。
为您的 class...
添加了一些 getter 和 setter
您的请求中似乎有多个 userData return,因此您可能需要一个列表或数组。如果您需要这方面的帮助,请告诉我!
public class userData
{
public string user_id {get;set;}
public string user_name{get;set;}
public int age{get;set;}
}
public class userList
{
public List<userData> users{get;set;}
}
1) 从 Nuget Package Manager
安装 Newtonsoft.json
并添加对您的程序的引用
喜欢 using Newtonsoft.Json;
2) 这是你的用户模型class
public class User
{
public string user_id { get; set; }
public string user_name { get; set; }
public int age { get; set; }
}
3) 然后将你的 json 反序列化为你的模型
class Program
{
static void Main(string[] args)
{
//Sample json i get in variable
var json = @"[{'user_id':'ho896ty6','user_name':'Mikje Flanders','age':43},{'user_id':'ft357hj','user_name':'Anna Simpson','age':56}]";
//This line convert your string json to c# object
List<User> userList = JsonConvert.DeserializeObject<List<User>>(json);
//Loop through to get each object inside users list
foreach (User user in userList)
{
Console.WriteLine($"user_id: {user.user_id}, user_name: {user.user_name}, age: {user.age}");
}
Console.ReadLine();
}
}
输出:
试试看对你有帮助
我不确定如何完成此操作。我从这样的 www 请求中获得了一些用户:
Dictionary<string, string> headers = new Dictionary<string, string>();
headers.Add("Authorization", "Basic "+System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes("user*pass")));
WWW www = new WWW("https://somedomain.com:8000/users", null, headers);
yield return www;
Debug.Log(www.text);
调试returns这个:
[{"user_id":"ho896ty6","user_name":"Mikje Flanders","age":43},{"user_id":"ft357hj","user_name":"Anna Simpson","age":56}]
现在,我有这样一个对象:
public class userData
{
string user_id;
string user_name;
int age;
}
我想将数据放入其中,但不确定 json 何时为数组。我试过这样,但没有运气:
userData thisUser = JsonUtility.FromJson<userData>(www.text);
希望有人能帮我解决这个问题,在此先感谢:-)
你必须使用分隔符解析 Json,除非你在那种情况下使用 visual studio,检查你的 nuget 是否有 Newtonsoft.Json
安装了这个包你可以:
Using NewtonSoft.Json;
列表 udat = JsonConvert.DeserializeObject>(json);
foreach( userData data in udat){
//do something here to each item;
}
[
{
"user_id": "ho896ty6",
"user_name": "Mikje Flanders",
"age": 43
},
{
"user_id": "ft357hj",
"user_name": "Anna Simpson",
"age": 56
}
]
我稍微清理了你的代码,这样你就可以看到你在做什么。 为您的 class...
添加了一些 getter 和 setter您的请求中似乎有多个 userData return,因此您可能需要一个列表或数组。如果您需要这方面的帮助,请告诉我!
public class userData
{
public string user_id {get;set;}
public string user_name{get;set;}
public int age{get;set;}
}
public class userList
{
public List<userData> users{get;set;}
}
1) 从 Nuget Package Manager
安装 Newtonsoft.json
并添加对您的程序的引用
喜欢 using Newtonsoft.Json;
2) 这是你的用户模型class
public class User
{
public string user_id { get; set; }
public string user_name { get; set; }
public int age { get; set; }
}
3) 然后将你的 json 反序列化为你的模型
class Program
{
static void Main(string[] args)
{
//Sample json i get in variable
var json = @"[{'user_id':'ho896ty6','user_name':'Mikje Flanders','age':43},{'user_id':'ft357hj','user_name':'Anna Simpson','age':56}]";
//This line convert your string json to c# object
List<User> userList = JsonConvert.DeserializeObject<List<User>>(json);
//Loop through to get each object inside users list
foreach (User user in userList)
{
Console.WriteLine($"user_id: {user.user_id}, user_name: {user.user_name}, age: {user.age}");
}
Console.ReadLine();
}
}
输出:
试试看对你有帮助