Tag: json

使用JSON.NET反序列化值为字段名称的JSON

我有一个非常不受欢迎的情况,需要我反序列化JSON,其中值是使用JSON.NET的字段名称。 假设我有以下JSON,结构非常合理: { “name”: “tugberk”, “roles”: [ { “id”: “1”, “name”: “admin” }, { “id”: “2”, “name”: “guest” } ] } 使用JSON.NET将其反序列化为CLR对象非常容易: class Program { static void Main(string[] args) { var camelCaseSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; var text = File.ReadAllText(“user_normal.txt”); var obj = JsonConvert.DeserializeObject(text, camelCaseSettings); } } public class User […]

使用JSON.NET将对象序列化为HttpClient的响应流

抽象 嗨,我正在开发一个项目,需要通过HttpClient发送一些对象的潜在巨大json,一个10-20 MB的JSON是一个典型的大小。 为了有效地执行此操作,我想使用流,使用Json.Net来序列化对象以及使用HttpClient发布数据的流。 问题 下面是使用Json.net进行序列化的代码片段,为了使用流,Json.net期望它将写入一个流: public static void Serialize( object value, Stream writeOnlyStream ) { StreamWriter writer = new StreamWriter(writeOnlyStream); <– Here Json.net expects the stream to be already created JsonTextWriter jsonWriter = new JsonTextWriter(writer); JsonSerializer ser = new JsonSerializer(); ser.Serialize(jsonWriter, value ); jsonWriter.Flush(); } 虽然HttpClient期望它将读取的流: using (var client = new HttpClient()) { client.BaseAddress […]

如何在WCF DataService中接受JSON?

我试图了解如何使用WCF数据服务(基于EF 4.1)来创建一个宁静的Web服务,该服务将持久化作为JSON对象传递的实体。 我已经能够创建一个方法,可以接受带有一组原始数据类型作为参数的GET请求。 我不喜欢这个解决方案,我更喜欢在http请求体中发送带有JSON对象的POST请求。 我发现我无法让框架将json序列化为一个对象,但是我可以手动完成它。 我的问题是我似乎无法读取POST请求的主体 – 正文应该是JSON有效负载。 下面是一个粗略的裂缝。 我尝试过几次不同的迭代,似乎无法从请求体中获取原始JSON。 有什么想法吗? 更好的方法吗? 我只想发布一些JSON数据并进行处理。 [WebInvoke(Method = “POST”)] public void SaveMyObj() { StreamReader r = new StreamReader(HttpContext.Current.Request.InputStream); string jsonBody = r.ReadToEnd(); // jsonBody is empty!! JavaScriptSerializer jss = new JavaScriptSerializer(); MyObj o = (MyObj)jss.Deserialize(jsonBody, typeof(MyObj)); // Now do validation, business logic, and persist my object } 我的DataService是一个扩展的entity […]

将嵌套的json解析为统一

我有一个解析这个json的问题: { “product_info”: { “title”: “Product Name” } } 这是我的代码: using UnityEngine; using System.Collections; using System.IO; using System.Net; using UnityEngine.UI; public class ReadJson : MonoBehaviour { public Text myText; [System.Serializable] public class ProductInfo { public string title { get; set; } } [System.Serializable] public class RootObject { public ProductInfo product_info { get; set; } } […]

如何将json转换为NameValueCollection

你怎么能简单地将一串JSON转换为C# NameValueCollection ,最好不使用第三方解析器?

在C#Winforms应用程序中使用JSON

所以我在C#中创建一个应用程序来从Web上读取一些信息,但它是一个Windows窗体应用程序。 我得到一个JSON字符串,我需要从中获取一些信息。 我知道有一个用于C#Web应用程序的库,但是如何在我的Windows窗体应用程序中使用?

从SQL Server数据库创建JSON结果

我有一个具有以下布局的SQL服务器 Table ( id int title varchar(40), start Date(), end Date(), allDay bool, username varchar(40) ); 我从这个博客中获得了以下代码,以便根据我想要使用的数据创建一个JSON对象,但是他的数据存储方式不同。 如何从数据库中提取相同的对象? 我猜我需要将文件设为.cshtml文件而不是.js文件并使用此文件: @{ var db = Database.Open(“events”); var selectQueryString = “SELECT * FROM events”; } @foreach(var row in db.Query(selectQueryString)){ } 但是,如何调整此代码以生成相同的JSON对象? 以下是博客的相关代码,我的尝试如下: public JsonResult GetEvents(double start, double end) { var userName = Session[“UserName”] as string; if(string.IsNullOrEmpty(userName)) { return […]

如何将JSON.Net中的JObject转换为T.

我知道我可以使用JsonConvert.DeserializeObject(string) ,但是,我需要查看对象的_type (可能不是第一个参数)以确定要转换的特定类。 基本上,我想要做的是: //Generic JSON processor for an API Client. function MyBaseType ProcessJson(string jsonText) { var obj = JObject.Parse(jsonText); switch (obj.Property(“_type”).Value.ToString()) { case “sometype”: return obj.RootValue(); //NOTE: this doesn’t work… // return obj.Root.Value(); … } } … // my usage… var obj = ProcessJson(jsonText); var instance = obj as MyConcreteType; if (instance == null) […]

使用属性将枚举序列化为JSON.NET中的字符串

我想使用类似于[JsonIgnore]属性使用JSON.NET将枚举序列化为字符串 示例类: enum Gender { Male, Female } class ABC { public Gender { get; set; } } 如果我使用JSON.NET序列化它: var a = new ABC(); var str = JsonConvert.SerializeObject(a); str设置为{Gender:0} ,我更喜欢{Gender:Male} 。

使用C#中的.NET 3.5将数据集转换为JSON

我一直在寻找一种简单的方法将数据集从PostgreSQL数据库转换为JSON,以便在我正在构建的项目中使用。 这是我第一次使用JSON,我发现找到一种简单的方法很难找到。 我一直在使用StringBuilder从数据集中的信息创建一个JSON字符串,但我听说使用System.Runtime.Serialization命名空间可以非常简单地使用.NET 3.5,尽管我有还没找到关于如何做到的简单文章或博客! 最简单的方法是什么?