代码之家  ›  专栏  ›  技术社区  ›  Mansa

从cUrl[duplicate]将Unity JSON字符串数组转换为对象

  •  0
  • Mansa  · 技术社区  · 6 年前

    我不知道如何做到这一点。我正在从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);  
    

    调试返回:

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

    希望有人能帮我这个忙,提前谢谢:-)

    2 回复  |  直到 6 年前
        1
  •  0
  •   Technivorous    6 年前

    您必须使用分隔符来解析Json,除非您在使用visualstudio的情况下检查nuget以获取 Newtonsoft.Json

      Using NewtonSoft.Json;
    

    List 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
      }
    ]
    

    看起来您的请求中返回了多个userData,因此您可能需要一个列表或数组。如果你需要帮助,告诉我!

      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;}
    }
    
        2
  •  2
  •   er-sho    6 年前

    Newtonsoft.json Nuget Package Manager 并添加对您的程序的引用 喜欢 using Newtonsoft.Json;

    2) 这是您的用户模型类

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

    输出:

    enter image description here

    再试一次也许对你有帮助。