คำถามติดแท็ก json.net

Json.NET (หรือที่เรียกว่า Newtonsoft.Json) เป็นเฟรมเวิร์ก JSON ประสิทธิภาพสูงยอดนิยมสำหรับ. NET

30
ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'Newtonsoft.Json' หรือการอ้างอิงอย่างใดอย่างหนึ่ง คำจำกัดความที่แสดงออกไม่ตรงกับการอ้างอิงประกอบ
สิ่งที่ฉันได้ลองหลังจากค้นหา: ใน Web.Config ให้ผลผูกพันกับเวอร์ชั่นเก่า: <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" /> </dependentAssembly> แก้ไขไฟล์. csproj ของฉันเพื่อให้แน่ใจว่ามี Newtonsoft อ้างอิงเดียวเท่านั้น <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <SpecificVersion>False</SpecificVersion> <Private>True</Private> </Reference> ค้นหาคอมพิวเตอร์ของฉันสำหรับทุก Newtonsoft.Json.dll และลบทุกรุ่นที่ไม่ใช่ 6.0.1 และลบเนื้อหาของโฟลเดอร์ temp ของฉัน ซ่อมแซม / ติดตั้งแพคเกจใหม่ในคอนโซลตัวจัดการ nuget มันประสบความสำเร็จในการสร้าง แต่ได้รับข้อผิดพลาดเมื่อไปที่เว็บไซต์ แก้ไข ตกลงดังนั้นฉันพยายามติดตั้งใหม่เหมือนทุกแพ็คเกจ nuget และดูเหมือนว่าจะเพิ่มรุ่น newtonsoft.json.dll รุ่น 4.5 …

7
วิเคราะห์ JSON ใน C #
ฉันกำลังพยายามวิเคราะห์ข้อมูล JSON จาก Google AJAX Search API ฉันมีURL นี้และฉันต้องการแยกย่อยเพื่อให้ผลลัพธ์ปรากฏขึ้น ขณะนี้ฉันได้เขียนโค้ดนี้แล้ว แต่ฉันก็ค่อนข้างหลงทางว่าจะทำอย่างไรต่อไปถึงแม้ว่าจะมีตัวอย่างจำนวนมากที่มาพร้อมกับสตริง JSON แบบง่าย ๆ การใหม่กับ C # และ. NET โดยทั่วไปฉันพยายามที่จะรับเอาท์พุทข้อความของแท้สำหรับหน้า ASP.NET ของฉันดังนั้นฉันถูกแนะนำให้ลอง JSON.NET ใครช่วยชี้ฉันในทิศทางที่ถูกต้องเพียงแค่เขียนโค้ดที่จะใช้ใน JSON จาก Google AJAX Search API แล้วพิมพ์ออกมาที่หน้าจอ แก้ไข: แก้ไขทั้งหมดแล้ว! ผลลัพธ์ทั้งหมดทำงานได้ดี ขอบคุณอีกครั้ง Dreas Grech! using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using …
201 c#  asp.net  json  parsing  json.net 

5
Json.NET สามารถทำให้เป็นอนุกรม / ดีซีเรียลไลซ์เป็น / จากกระแสได้หรือไม่?
ฉันได้ยินมาว่า Json.NET เร็วกว่า DataContractJsonSerializer และต้องการลอง ... แต่ฉันไม่พบวิธีการใด ๆ ใน JsonConvert ที่รับกระแสข้อมูลแทนที่จะเป็นสายอักขระ สำหรับการดีซีเรียลไลซ์ไฟล์ที่มี JSON บน WinPhone ฉันใช้รหัสต่อไปนี้เพื่ออ่านเนื้อหาของไฟล์ลงในสายอักขระแล้วจึงทำการ deserialize ให้เป็น JSON ดูเหมือนว่าจะช้ากว่าการทดสอบของฉัน (เฉพาะกิจมาก) ประมาณ 4 เท่าเมื่อเทียบกับการใช้ DataContractJsonSerializer เพื่อทำการ deserialize โดยตรงจากสตรีม ... // DCJS DataContractJsonSerializer dc = new DataContractJsonSerializer(typeof(Constants)); Constants constants = (Constants)dc.ReadObject(stream); // JSON.NET string json = new StreamReader(stream).ReadToEnd(); Constants constants = …


4
จะเขียนไฟล์ JSON ใน C # ได้อย่างไร?
ฉันต้องเขียนข้อมูลต่อไปนี้ลงในไฟล์ข้อความโดยใช้รูปแบบ JSON ใน C # วงเล็บมีความสำคัญสำหรับการเป็นรูปแบบ JSON ที่ถูกต้อง [ { "Id": 1, "SSN": 123, "Message": "whatever" }, { "Id": 2, "SSN": 125, "Message": "whatever" } ] นี่คือคลาสโมเดลของฉัน: public class data { public int Id { get; set; } public int SSN { get; set; } public string Message { get; …

8
การดีซีเรียลไลซ์ข้อมูล JSON เป็น C # โดยใช้ JSON.NET
ฉันค่อนข้างใหม่ในการทำงานกับ C # และข้อมูล JSON และกำลังมองหาแนวทาง ฉันใช้ C # 3.0 กับ. NET 3.5SP1 และ JSON.NET 3.5r6 ฉันมีคลาส C # ที่กำหนดไว้ซึ่งฉันต้องการเติมจากโครงสร้าง JSON อย่างไรก็ตามโครงสร้าง JSON บางรายการสำหรับรายการที่ดึงจากเว็บเซอร์วิสจะมีแอตทริบิวต์ที่เป็นไปได้ทั้งหมดที่กำหนดไว้ในคลาส C # ฉันกำลังทำสิ่งที่ดูเหมือนจะผิดวิธีที่ยากและเพิ่งเลือกแต่ละค่าหนึ่งโดยหนึ่งจาก JObject และเปลี่ยนสายอักขระเป็นคุณสมบัติคลาสที่ต้องการ JsonSerializer serializer = new JsonSerializer(); var o = (JObject)serializer.Deserialize(myjsondata); MyAccount.EmployeeID = (string)o["employeeid"][0]; วิธีที่ดีที่สุดในการดีซีเรียลไลซ์โครงสร้าง JSON ลงในคลาส C # และการจัดการข้อมูลที่ขาดหายไปที่เป็นไปได้จากแหล่ง JSON คืออะไร คลาสของฉันถูกกำหนดเป็น: …

3
json.net มีวิธีการที่สำคัญ?
หากคำตอบของฉันมีคีย์ "ข้อผิดพลาด" ฉันต้องดำเนินการข้อผิดพลาดและแสดงกล่องคำเตือน มีวิธี "haskey" ใน json.net หรือไม่ ชอบ: var x= JObject.Parse(string_my); if(x.HasKey["error_msg"]) MessageBox.Show("Error!")
140 c#  json  json.net 


8
การระบุรูปแบบ DateTime แบบกำหนดเองเมื่อทำการจัดลำดับด้วย Json.Net
ฉันกำลังพัฒนา API เพื่อเปิดเผยข้อมูลบางอย่างโดยใช้ ASP.NET Web API ในหนึ่งใน API ลูกค้าต้องการให้เราเปิดเผยวันที่ในyyyy-MM-ddรูปแบบ ฉันไม่ต้องการเปลี่ยนการตั้งค่าส่วนกลาง (เช่นGlobalConfiguration.Configuration.Formatters.JsonFormatter) สำหรับสิ่งนั้นเนื่องจากมีความเฉพาะเจาะจงสำหรับลูกค้า และฉันจะพัฒนาสิ่งนั้นในโซลูชันสำหรับลูกค้าหลายราย หนึ่งในวิธีการแก้ปัญหาที่ฉันคิดได้ก็คือการสร้างกำหนดเองJsonConverterจากนั้นนำไปใช้กับคุณสมบัติที่ฉันต้องใช้ในการจัดรูปแบบที่กำหนดเอง เช่น class ReturnObjectA { [JsonConverter(typeof(CustomDateTimeConverter))] public DateTime ReturnDate { get;set;} } แค่สงสัยว่ามีวิธีอื่นที่ง่ายกว่าในการทำเช่นนั้น

5
JSON.net: วิธีการดีซีเรียลไลซ์โดยไม่ต้องใช้ Constructor เริ่มต้น?
ฉันมีคลาสที่มีคอนสตรัคเตอร์เริ่มต้นและคอนสตรัคเตอร์โอเวอร์โหลดที่ใช้ในชุดพารามิเตอร์ พารามิเตอร์เหล่านี้จับคู่กับเขตข้อมูลบนวัตถุและได้รับมอบหมายในการก่อสร้าง ณ จุดนี้ฉันต้องการตัวสร้างเริ่มต้นสำหรับวัตถุประสงค์อื่น ๆ ดังนั้นฉันต้องการเก็บไว้ถ้าฉันสามารถ ปัญหาของฉัน: ถ้าฉันลบตัวสร้างเริ่มต้นและส่งผ่านในสตริง JSON วัตถุ deserializes อย่างถูกต้องและผ่านในพารามิเตอร์ตัวสร้างโดยไม่มีปัญหาใด ๆ ฉันได้รับวัตถุกลับมาเติมในแบบที่ฉันคาดหวัง อย่างไรก็ตามทันทีที่ฉันเพิ่มนวกรรมิกเริ่มต้นลงในวัตถุเมื่อฉันเรียกJsonConvert.DeserializeObject<Result>(jsontext)คุณสมบัติที่จะไม่บรรจุอีกต่อไป ณ จุดนี้ฉันได้ลองเพิ่มnew JsonSerializerSettings(){CheckAdditionalContent = true}การโทรดีซีเรียลไลเซชั่น ที่ไม่ได้ทำอะไรเลย หมายเหตุอื่น พารามิเตอร์ตัวสร้างตรงกับชื่อของเขตข้อมูลอย่างแน่นอนยกเว้นว่าพารามิเตอร์จะเริ่มต้นด้วยตัวอักษรตัวพิมพ์เล็ก ฉันไม่คิดว่าจะเป็นเช่นนี้เพราะอย่างที่ฉันได้กล่าวไว้การดีซีเรียลไลเซชั่นใช้งานได้ดีโดยไม่มีคอนสตรัคเตอร์เริ่มต้น นี่คือตัวอย่างของการก่อสร้างของฉัน: public Result() { } public Result(int? code, string format, Dictionary<string, string> details = null) { Code = code ?? ERROR_CODE; Format = format; if (details …
136 c#  json  json.net 

16
การหล่ออินเทอร์เฟซสำหรับ deserialization ใน JSON.NET
ฉันกำลังพยายามตั้งค่าเครื่องอ่านที่จะรับวัตถุ JSON จากเว็บไซต์ต่างๆ (คิดว่าการขูดข้อมูล) และแปลเป็นวัตถุ C # ฉันกำลังใช้ JSON.NET สำหรับกระบวนการ deserialization ปัญหาที่ฉันพบคือไม่ทราบวิธีจัดการคุณสมบัติระดับอินเตอร์เฟสในคลาส ดังนั้นบางอย่างของธรรมชาติ: public IThingy Thing จะทำให้เกิดข้อผิดพลาด: ไม่สามารถสร้างอินสแตนซ์ประเภท IThingy Type เป็นอินเทอร์เฟซหรือคลาสนามธรรมและไม่สามารถสร้างอินสแตนซ์ได้ มันค่อนข้างสำคัญที่จะต้องเป็น IThingy เมื่อเทียบกับ Thingy เนื่องจากโค้ดที่ฉันกำลังทำงานอยู่นั้นถือว่ามีความละเอียดอ่อนและการทดสอบหน่วยเป็นสิ่งที่สำคัญมาก การจำลองวัตถุสำหรับสคริปต์ทดสอบอะตอมไม่สามารถทำได้กับวัตถุที่มีคุณสมบัติครบถ้วนเช่น Thingy ต้องเป็นอินเทอร์เฟซ ฉันอ่านเอกสารของ JSON.NET มาระยะหนึ่งแล้วและคำถามที่ฉันพบในไซต์นี้ที่เกี่ยวข้องกับเรื่องนี้ล้วนมาจากปีที่แล้ว ความช่วยเหลือใด ๆ นอกจากนี้หากเป็นเรื่องสำคัญแอปของฉันเขียนด้วย. NET 4.0
129 c#  .net  json  json.net 

10
ทำให้คุณสมบัติ deserialize แต่ไม่ทำให้เป็นอนุกรมกับ json.net
เรามีไฟล์คอนฟิกูเรชันบางไฟล์ที่สร้างโดยการทำให้อ็อบเจกต์ C # เป็นอนุกรมกับ Json.net เราต้องการย้ายคุณสมบัติหนึ่งของคลาสซีเรียลไลซ์ออกจากการเป็นคุณสมบัติ enum ธรรมดาไปยังคุณสมบัติคลาส วิธีง่ายๆวิธีหนึ่งในการทำเช่นนี้คือการทิ้งคุณสมบัติ enum เก่าไว้ในคลาสและจัดให้ Json.net อ่านคุณสมบัตินี้เมื่อเราโหลด config แต่อย่าบันทึกอีกครั้งเมื่อเราจัดลำดับออบเจ็กต์ต่อไป เราจะจัดการกับการสร้างคลาสใหม่จาก enum เก่าแยกกัน มีวิธีง่ายๆในการทำเครื่องหมาย (เช่นด้วยแอตทริบิวต์) คุณสมบัติของออบเจ็กต์ C # หรือไม่เพื่อที่ Json.net จะเพิกเฉยต่อเมื่อทำให้เป็นซีเรียลไลซ์เท่านั้น แต่จะต้องเข้าร่วมเมื่อทำการ deserializing
124 c#  json.net 

3
IMvcBuilder AddJsonOptions ไปอยู่ที่ไหนใน. Net Core 3.0
ฉันเพิ่งอัปเกรดโครงการ ASP web API จากไฟล์. Net core 2.0ถึง3.0. ฉันใช้ services.AddMvc() .AddJsonOptions(options =>options.SerializerSettings.ContractResolver = new DefaultContractResolver()); ก่อนหน้านี้เพื่อให้แน่ใจว่าปลอกล่างของ JSON แบบอนุกรม หลังจากอัปเกรดเป็น 3.0 ฉันได้รับข้อผิดพลาดนี้: ข้อผิดพลาด CS1061 'IMvcBuilder' ไม่มีคำจำกัดความสำหรับ 'AddJsonOptions' และไม่มีวิธีการขยายที่สามารถเข้าถึงได้ 'AddJsonOptions' ที่ยอมรับอาร์กิวเมนต์แรกของประเภท 'IMvcBuilder' (คุณไม่มีคำสั่งโดยใช้การอ้างอิงหรือการอ้างอิงแอสเซมบลีหรือไม่) ตามAddJsonOptions สำหรับ MvcJsonOptions ใน Asp.Net Core 2.2วิธีการขยาย AddJsonOptions ได้รับการจัดเตรียมโดยแพคเกจMicrosoft.AspNetCore.Mvc.Formatters.Json nuget ฉันได้ลองติดตั้ง / ติดตั้งใหม่แล้ว แต่ยังไม่สามารถแก้ไขวิธีนี้ได้ ที่น่าสนใจ intellisense แสดงเฉพาะ Microsoft.AspNetCore.Mvc.Formatters Xmlเมื่อฉันพยายามเพิ่มคำสั่งใช้แม้ว่าฉันจะเพิ่มแพ็คเกจJson …

5
Deserializing JSON Object Array ด้วย Json.net
ฉันพยายามใช้ API ที่ใช้โครงสร้างตัวอย่างต่อไปนี้สำหรับ json ที่ส่งคืน [ { "customer":{ "first_name":"Test", "last_name":"Account", "email":"test1@example.com", "organization":"", "reference":null, "id":3545134, "created_at":"2013-08-06T15:51:15-04:00", "updated_at":"2013-08-06T15:51:15-04:00", "address":"", "address_2":"", "city":"", "state":"", "zip":"", "country":"", "phone":"" } }, { "customer":{ "first_name":"Test", "last_name":"Account2", "email":"test2@example.com", "organization":"", "reference":null, "id":3570462, "created_at":"2013-08-12T11:54:58-04:00", "updated_at":"2013-08-12T11:54:58-04:00", "address":"", "address_2":"", "city":"", "state":"", "zip":"", "country":"", "phone":"" } } ] JSON.net จะทำงานได้ดีกับโครงสร้างต่อไปนี้ { "customer": { …
118 c#  json.net 

6
รับคุณค่าจาก JToken ที่อาจไม่มีอยู่จริง (แนวทางปฏิบัติที่ดีที่สุด)
แนวทางปฏิบัติที่ดีที่สุดในการดึงค่า JSON ที่อาจไม่มีอยู่ใน C # โดยใช้Json.NETคืออะไร ตอนนี้ฉันกำลังติดต่อกับผู้ให้บริการ JSON ที่ส่งคืน JSON ที่บางครั้งมีคู่คีย์ / ค่าบางคู่และบางครั้งก็ไม่มี ฉันใช้วิธีนี้ (อาจจะไม่ถูกต้อง) เพื่อรับค่าของฉัน (เช่นการได้รับสองเท่า): if(null != jToken["width"]) width = double.Parse(jToken["width"].ToString()); else width = 100; ตอนนี้ใช้งานได้ดี แต่เมื่อมีจำนวนมากมันก็ยุ่งยาก ฉันลงเอยด้วยการเขียนวิธีการขยายและหลังจากเขียนมันเท่านั้นฉันสงสัยว่าบางทีฉันอาจจะโง่ ... อย่างไรก็ตามนี่คือวิธีการขยาย (ฉันรวมเฉพาะกรณีสำหรับคู่และสตริง แต่ในความเป็นจริงฉันมีค่อนข้างน้อย มากกว่า): public static T GetValue<T>(this JToken jToken, string key, T defaultValue = default(T)) { T returnValue …
117 c#  json.net 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.