Newtonsoft.Json Json工具的使用、类型方法大全

 Newtonsoft.Json

Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就不多说了,笔者最近在弄接口,需要操作Json。

以某个云计算平台的Token为例,边操作边讲解。

Json 转为 Model

将 Model 转为 Json

将 LINQ 转为 JSON

Linq 操作

命名空间、类型、方法大全


 Json 转为 Model

 

新建一个 Json 文件,名字随意,例如 json1.json

把以下内容粘贴进去

{
  "refresh_token": "25.ea2f85ebd48df85fe5400000.18640.282335-15533349",
  "expires_in": 2592010,
  "session_key": "9mzdWr3n8ncMeDgX8zjhkhlW8khb5cdZtPevPbPwQGBg==",
  "access_token": "24.ac0ca9fakhlkyhl552017858.282335-15533349",
  "scope": "audio_voice_assistant_get audio_tts_post public vis-ocr_ocr nlp_simnet nlp_wclassify_watermark brain_ocr_scope vis-classify_car brain_gif_antiporn brain_ocr_general brain_ocr_general_basic brain_ocr_generer vis-classify_animal brain_politician brain_unit_utterance brain_imgquality_general brain_nlp_simnet brain_nlp_depparser vis-classify_plant brain_solution brain_ocr_plate_number brain_nlp_wordembedding brain_nlp_dnnlm_cn_legacy brain_nlp_simnet_legacy brain_nlp_commain_animal_classify brain_plant_classify brain_solution_iocr brain_realtime_product brain_nlp_lexer_custom brain_kgbody_analysis brain_body_attr brain_ocr_vat_invoice brain_advanced_general_classify brain_numbers brain_body_number vis-faceverify_FACE_auth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi",
  "session_secret": "2ca66d464545c77a4767f709873be4"
}

 

定义一个模型,文件名为 AccessTokenModel.cs

    public class AccessTokenModel
    {
        public string refresh_token { get; set; }
        public string expires_in { get; set; }//: Access Token的有效期(秒为单位,一般为1个月)
        public string scope { get; set; }
        public string session_key { get; set; }
        public string access_token { get; set; }//: 要获取的Access Token
        public string session_secret { get; set; }
    }

打开 Program.cs 文件

            public static void Main(string[] args)
            {
                FileStream fs = new FileStream(@"请修改成你的文件路径\json1.json", FileMode.Open);
                StreamReader fileStream = new StreamReader(fs);
                string str = "";
                string line;
                while ((line = fileStream.ReadLine()) != null)
                {
                    str += line;
                }
          //上面的代码没有意义,只是将Json文件的内容加载到字符串中
           JObject jObject = new JObject();        //新建 操作对象 AccessTokenModel a = JsonConvert.DeserializeObject<AccessTokenModel>(str); Console.WriteLine(a.access_token);    //随意输出一个属性 Console.ReadKey(); }

 重点方法 

JsonConvert.DeserializeObject<要转化的模型类>("字符串对象");

之后可以很方便的把Json文件的内容存放到数据库中。

集合

把Json文件改成以下的样子

[{
  "refresh_token": "25.ea2f85ebd48df85fe5400000.18640.282335-15533349",
  "expires_in": 2592010,
  "session_key": "9mzdWr3n8ncMeDgX8zjhkhlW8khb5cdZtPevPbPwQGBg==",
  "access_token": "24.ac0ca9fakhlkyhl552017858.282335-15533349",
  "scope": "audio_voice_assistant_get audio_tts_post public vis-ocr_ocr nlp_simnet nlp_wclassify_watermark brain_ocr_scope vis-classify_car brain_gif_antiporn brain_ocr_general brain_ocr_general_basic brain_ocr_generer vis-classify_animal brain_politician brain_unit_utterance brain_imgquality_general brain_nlp_simnet brain_nlp_depparser vis-classify_plant brain_solution brain_ocr_plate_number brain_nlp_wordembedding brain_nlp_dnnlm_cn_legacy brain_nlp_simnet_legacy brain_nlp_commain_animal_classify brain_plant_classify brain_solution_iocr brain_realtime_product brain_nlp_lexer_custom brain_kgbody_analysis brain_body_attr brain_ocr_vat_invoice brain_advanced_general_classify brain_numbers brain_body_number vis-faceverify_FACE_auth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi",
  "session_secret": "2ca66d464545c77a4767f709873be4"
},
{
  "refresh_token": "25.ea2f85ebd48df85fe5400000.18640.282335-15533349",
  "expires_in": 2592010,
  "session_key": "9mzdWr3n8ncMeDgX8zjhkhlW8khb5cdZtPevPbPwQGBg==",
  "access_token": "24.ac0ca9fakhlkyhl552017858.282335-15533349",
  "scope": "audio_voice_assistant_get audio_tts_post public vis-ocr_ocr nlp_simnet nlp_wclassify_watermark brain_ocr_scope vis-classify_car brain_gif_antiporn brain_ocr_general brain_ocr_general_basic brain_ocr_generer vis-classify_animal brain_politician brain_unit_utterance brain_imgquality_general brain_nlp_simnet brain_nlp_depparser vis-classify_plant brain_solution brain_ocr_plate_number brain_nlp_wordembedding brain_nlp_dnnlm_cn_legacy brain_nlp_simnet_legacy brain_nlp_commain_animal_classify brain_plant_classify brain_solution_iocr brain_realtime_product brain_nlp_lexer_custom brain_kgbody_analysis brain_body_attr brain_ocr_vat_invoice brain_advanced_general_classify brain_numbers brain_body_number vis-faceverify_FACE_auth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi",
  "session_secret": "2ca66d464545c77a4767f709873be4"
}
]

 

            public static void Main(string[] args)
            {
                FileStream fs = new FileStream(@"请修改成你的文件路径\json1.json", FileMode.Open);
                StreamReader fileStream = new StreamReader(fs);
                string str = "";
                string line;
                while ((line = fileStream.ReadLine()) != null)
                {
                    str += line;
                }
                //上面的代码没有意义,只是将Json文件的内容加载到字符串中

                JObject jObject = new JObject();        //新建 操作对象
                List<AccessTokenModel> a = JsonConvert.DeserializeObject<List<AccessTokenModel>>(str);
                foreach (var i in a)
                {
                    Console.WriteLine(i.access_token);
                }

                Console.ReadKey();
            }

 


将Model转为Json

能够将模型对象转为 Json。

继续使用上面的 AccessTokenModel.cs 文件,

            public static void Main(string[] args)
            {
                AccessTokenModel accessTokenModel = new AccessTokenModel();
                accessTokenModel.access_token = "test1";
                accessTokenModel.expires_in = "test2";
                accessTokenModel.refresh_token = "test3";
                accessTokenModel.scope = "test4";
                accessTokenModel.session_key = "test5";
                accessTokenModel.session_secret = "test6";

                JObject jObject = new JObject();
                string str = JsonConvert.SerializeObject(accessTokenModel);    //转为字符串

                Console.WriteLine(str);
                Console.ReadKey();
            }

重点方法 

JsonConvert.SerializeObject(a模型对象);

运行后可以看到控制台输出的是Json字符串了,你可以继续把他放到Json文件中,这里不再赘述。


将 LINQ 转为 JSON

下面这个是从官网直接copy的例子,Jarray 是其框架提供的一种类型。

在控制台运行后会发现输出的字符是已经格式化的。

            public static void Main(string[] args)
            {
                JArray array = new JArray();
                array.Add("Manual text");
                array.Add(new DateTime(2000, 5, 23));

                JObject o = new JObject();
                o["MyArray"] = array;

                string json = o.ToString();
                // {
                //   "MyArray": [
                //     "Manual text",
                //     "2000-05-23T00:00:00"
                //   ]
                // }

                Console.WriteLine(json);
                Console.ReadKey();

 


Linq 操作

框架提供了对 Jobject 对象的Linq操作支持

using Newtonsoft.Json.Linq;

之后你可以像操作数组、集合或者Context一样方便。

 


命名空间、类型、方法大全

本来想翻译一下的,英语太差,算了。在常用的类型前面加粗吧

 

Classes
 ClassDescription

Public class

DefaultJsonNameTable The default JSON name table implementation.

Public class

JsonArrayAttribute Instructs the JsonSerializer how to serialize the collection.

Public class

JsonConstructorAttribute Instructs the JsonSerializer to use the specified constructor when deserializing that object.

Public class

JsonContainerAttribute Instructs the JsonSerializer how to serialize the object.

Public class

Code example

JsonConvert 提供用于在.NET 和 Json之间互相转等操作的方法

Public class

JsonConverter Converts an object to and from JSON.

Public class

JsonConverter<T> Converts an object to and from JSON.

Public class

JsonConverterAttribute Instructs the JsonSerializer to use the specified JsonConverter when serializing the member or class.

Public class

JsonConverterCollection Represents a collection of JsonConverter.

Public class

JsonDictionaryAttribute Instructs the JsonSerializer how to serialize the collection.

Public class

JsonException JSON序列化或反序列化过程中发生错误时引发的异常类型

Public class

JsonExtensionDataAttribute Instructs the JsonSerializer to deserialize properties with no matching class member into the specified collection and write values during serialization.

Public class

JsonIgnoreAttribute Instructs the JsonSerializer not to serialize the public field or public read/write property value.

Public class

JsonNameTable Base class for a table of atomized string objects.

Public class

JsonObjectAttribute Instructs the JsonSerializer how to serialize the object.

Public class

JsonPropertyAttribute Instructs the JsonSerializer to always serialize the member with the specified name.

Public class

JsonReader Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data.

Public class

JsonReaderException The exception thrown when an error occurs while reading JSON text.

Public class

JsonRequiredAttribute Instructs the JsonSerializer to always serialize the member, and to require that the member has a value.

Public class

JsonSerializationException The exception thrown when an error occurs during JSON serialization or deserialization.

Public class

JsonSerializer Serializes and deserializes objects into and from the JSON format. The JsonSerializer enables you to control how objects are encoded into JSON.

Public class

JsonSerializerSettings Specifies the settings on a JsonSerializer object.

Public class

JsonTextReader Represents a reader that provides fast, non-cached, forward-only access to JSON text data.

Public class

JsonTextWriter Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.

Public class

JsonValidatingReader Obsolete.

Represents a reader that provides JsonSchema validation.

Caution note

 Caution
JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschemafor more details.

Public class

JsonWriter Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.

Public class

JsonWriterException The exception thrown when an error occurs while writing JSON text.

Interfaces
 InterfaceDescription

Public interface

IArrayPool<T> Provides an interface for using pooled arrays.

Public interface

IJsonLineInfo Provides an interface to enable a class to return line and position information.

Enumerations
 EnumerationDescription

Public enumeration

ConstructorHandling Specifies how constructors are used when initializing objects during deserialization by the JsonSerializer.

Public enumeration

DateFormatHandling Specifies how dates are formatted when writing JSON text.

Public enumeration

DateParseHandling Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text.

Public enumeration

DateTimeZoneHandling Specifies how to treat the time value when converting between string and DateTime.

Public enumeration

Code example

DefaultValueHandling Specifies default value handling options for the JsonSerializer.

Public enumeration

FloatFormatHandling Specifies float format handling options when writing special floating point numbers, e.g. NaN,PositiveInfinity and NegativeInfinity with JsonWriter.

Public enumeration

FloatParseHandling Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.

Public enumeration

Formatting Specifies formatting options for the JsonTextWriter.

Protected enumeration

JsonReader.State Specifies the state of the reader.

Public enumeration

JsonToken Specifies the type of JSON token.

Public enumeration

MemberSerialization Specifies the member serialization options for the JsonSerializer.

Public enumeration

MetadataPropertyHandling Specifies metadata property handling options for the JsonSerializer.

Public enumeration

MissingMemberHandling Specifies missing member handling options for the JsonSerializer.

Public enumeration

Code example

NullValueHandling Specifies null value handling options for the JsonSerializer.

Public enumeration

ObjectCreationHandling Specifies how object creation is handled by the JsonSerializer.

Public enumeration

Code example

PreserveReferencesHandling Specifies reference handling options for the JsonSerializer. Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable.

Public enumeration

ReferenceLoopHandling Specifies reference loop handling options for the JsonSerializer.

Public enumeration

Required Indicating whether a property is required.

Public enumeration

StringEscapeHandling Specifies how strings are escaped when writing JSON text.

Public enumeration

TypeNameAssemblyFormatHandling Indicates the method that will be used during deserialization for locating and loading assemblies.

Public enumeration

TypeNameHandling Specifies type name handling options for the JsonSerializer.

Public enumeration

WriteState Specifies the state of the JsonWriter.
 

 

相关文章

python方向·数据分析   ·自然语言处理nlp   案例:中...
原文地址http://blog.sina.com.cn/s/blog_574a437f01019poo....
ptb数据集是语言模型学习中应用最广泛的数据集,常用该数据集...
 Newtonsoft.JsonNewtonsoft.Json是.Net平台操作Json的工具...
NLP(NaturalLanguageProcessing)自然语言处理是人工智能的一...
做一个中文文本分类任务,首先要做的是文本的预处理,对文本...