• json.net(Json.NET


    将对象转换为字符串很简单,唯一要注意的点就是为了避免循环要在需要的字段上添加jsonignore属性。可以参照这篇博文:http://www.mamicode.com/info-detail-1456182.html

    在将json字符串转换为对象的时候需要注意的地方就比较多了。不要因为功能简单就不当回事,新手如果不注意容易吃亏。

    这里用读取 http://jsonplaceholder.typicode.com/users 中的json数据来作为演示。

    新建控制台程序,新建JsonDemo类

    using System;
    using System.Net.Http;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    
    namespace JsonD
    {
        public class JsonDemo
        {
            public static void TestJson()
            {
                HttpClient client = new HttpClient();
    
                HttpResponseMessage response =
                    client.GetAsync("http://jsonplaceholder.typicode.com/users").Result;
    
                Console.WriteLine(response.Content.ReadAsStringAsync().Result);
    
                string jsonString = response.Content.ReadAsStringAsync().Result;
    
    //            JsonConvert.DeserializeObject()
                Console.WriteLine("下面尝试转换json字符串为动态类并获取属性");
                dynamic jsonObj = JsonConvert.DeserializeObject(jsonString);
    //            或者dynamic jsonObj = JToken.Parse(jsonString) as dynamic;
    
                Console.WriteLine(jsonObj[0].id);
                Console.WriteLine(jsonObj[0].address.city);
                Console.WriteLine(jsonObj[0].address.geo.lat);
    
                Console.WriteLine("下面尝试转换json字符串为实体并获取属性");
                User[] users = JsonConvert.DeserializeObject<User[]>(jsonString);
    
                foreach (User user in users)
                {
                    Console.WriteLine(user.name);
                }
            }
        }
    }

    User实体:

    namespace JsonD
    {
        public class User
        {
            public int id { set; get; }
            public string name { set; get; }
            public string email { set; get; }
        }
    }

    Program.cs调用:

            static void Main(string[] args)
            {
    //            sendSms();
                JsonDemo.TestJson();
    
                Console.ReadLine();
            }
  • 相关阅读:
    Maven name=archetypeCatalog value=internal
    ResponseBody和文件上传
    Idea控制台中文乱码
    idea tomcat部署项目路径
    git 常用操作
    webpack
    AbstractQueuedSynchronizer-AQS
    线程安全
    cpu多级缓存
    Axure中继器设置单选
  • 原文地址:https://www.cnblogs.com/axel10/p/8617945.html
Copyright © 2020-2023  润新知