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;
   }

使用jsoneditoronline

[
  {
    "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();
    }
}

输出:

试试看对你有帮助