我已经使用Json.Net的“JsonConvert.Deserialize(json)”方法到目前为止工作得很好,说实话,我不需要什么比这更多。 我正在从不同的URL下载JSON内容的背景(控制台)应用程序,然后将结果反序列化为.Net对象列表。 using (WebClient client = new WebClient()) { string json = client.DownloadString(stringUrl); var result = JsonConvert.DeserializeObject<List<Contact>>(json); } 上面的简单代码片段可能看起来并不完美,但是它完成了这项工作。 当文件较大时(15000个联系人 – 48 MB文件),JsonConvert.DeserializeObject不是解决scheme,并且该行引发JsonReaderException的exceptiontypes。 下载的json是一个数组,这是一个样本的样子。 Contact是反序列化的json对象的容器类。 [ { "firstname": "sometext", "lastname": "sometext" }, { "firstname": "sometext", "lastname": "sometext" }, { "firstname": "sometext", "lastname": "sometext" }, { "firstname": "sometext", "lastname": "sometext" } ] 我最初的猜测是内存耗尽。 出于好奇,我试图把它parsing为JArray,这也造成了同样的例外。 我已经开始深入Json.Net文档并阅读类似的线程。 由于我还没有设法解决问题,所以我决定在这里发表一个问题。 […]
我使用JSON.NET直接从对象实例序列化DateTime值(不格式化程序使用DateTime.ToString())。 有没有办法强制JSON.NET在序列化中包含毫秒,即使DateTime的毫秒部分是零? 背景:对于这个JSON端点,我有一个非常慢的Web服务使用者。 条件逻辑对于消费者来说是昂贵的,所以我想每次都提供相同的数据格式。
这是我的困境。 我正在使用一个RESTful ASP.NET服务,试图获得一个函数来返回这种格式的JSONstring: {"Test1Key":"Test1Value","Test2Key":"Test2Value","Test3Key":"Test3Value"} 但是我用这种格式来取代它: [{"Key":"Test1Key","Value":"Test1Value"}, {"Key":"Test2Key","Value":"Test2Value"}, {"Key":"Test3Key","Value":"Test3Value"}] 我的方法如下所示: [OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] public Dictionary<string, string> Test(String Token) { if (!IsAuthorized(Token)) return null; if (!IsSecure(HttpContext.Current)) return null; Dictionary<string, string> testresults = new Dictionary<string, string>(); testresults.Add("Test1Key", "Test1Value"); testresults.Add("Test2Key", "Test2Value"); testresults.Add("Test3Key", "Test3Value"); return testresults; } 有什么办法可以摆脱那些“关键”和“价值”标签只使用内置的ASP.NET工具? (即,我宁愿不使用JSON.NET,如果它是可以避免的) 非常感谢! […]
当使用JSON.stringify()时,json2.js似乎忽略父对象的成员。 例: require('./json2.js'); function WorldObject(type) { this.position = 4; } function Actor(val) { this.someVal = 50; } Actor.prototype = new WorldObject(); var a = new Actor(2); console.log(a.position); console.log(JSON.stringify(a)); 输出是: 4 {"someVal":50} 我期望这个输出: 4 {"position":0, "someVal":50}
今天我为这个主题搜了很多。 但我找不到它,我怎样才能添加JSONArray到JSONObject? 因为每次我这样做,我得到这个错误:Stackoverflow JSONObject fillBadkamerFormaatFromContentlet(Structure structure, String formaat) { JSONObject jsonObject = new JSONObject(); JSONArray arr = new JSONArray(); BadkamerFormaat badkamerFormaat = new BadkamerFormaat(); BadkamerTegel badkamerTegel; List<Contentlet> contentlets = getContentletsByStructure(structure); badkamerFormaat.formaat = formaat; badkamerFormaat.tegels = new ArrayList<BadkamerTegel>(); try { jsonObject.put("formaat", formaat); } catch (JSONException e1) { throw new RuntimeException(e1); } for(Contentlet contentlet : contentlets) { […]
我是使用JSON数据的新手。 我正在从Web服务读取数据。 发回的查询数据如下: [["B02001_001E","NAME","state"], ["4712651","Alabama","01"], ["691189","Alaska","02"], ["6246816","Arizona","04"], ["18511620","Florida","12"], ["9468815","Georgia","13"], ["1333591","Hawaii","15"], ["1526797","Idaho","16"], ["3762322","Puerto Rico","72"]] 有没有一种方法来反序列化这种数据的方式,基础对象将会在没有我的情况下首先定义对象是什么样子? 在上面的例子中,对象由第一行定义: ["B02001_001E","NAME","state"], 通常,Web服务将返回格式为二维JSON数组的查询数据,其中第一行提供列名称,后续行提供数据值。
我想将jsonstring转换为Object列表。 请帮帮我。 如果由NewtonJson完成,将会更有帮助。 我试过了,但是不行。 我不想要那个JSON的所有值。 只是在MatrixModel中提到的那些 这是一个对象 public class MatrixModel { public string S1 { get; set; } public string S2 { get; set; } public string S3 { get; set; } public string S4 { get; set; } public string S5 { get; set; } public string S6 { get; set; } public string […]
我创build了一个团队的Web API控制器,并尝试调用GET方法来获取数据库中所有团队的JSON结果。 但是当我打电话的时候,我只得到了json中的第一个团队,但是当我在return语句中设置了一个断点时,它有254个团队以及所有的游戏。 这是我正在处理的两个模型: public class Team { public string Id { get; set; } public string Name { get; set; } public string Icon { get; set; } public string Mascot { get; set; } public string Conference { get; set; } public int NationalRank { get; set; } public List<Game> Games { get; […]
寻求 我正在寻找获取具有重音字符的行。 列( NAME )的编码是latin1_swedish_ci 。 代码 以下查询使用phpMyAdmin返回Abord â Plouffe : SELECT C.NAME FROM CITY C WHERE C.REGION_ID=10 AND C.NAME_LOWERCASE LIKE '%abor%' ORDER BY C.NAME LIMIT 30 以下显示期望值(函数称为db_fetch_all( $result ) ): while( $row = mysql_fetch_assoc( $result ) ) { foreach( $row as $value ) { echo $value . " "; $value = utf8_encode( $value ); […]
我正在为我的应用程序开发一个REST接口,使用Jackson将我的POJO域对象序列化为JSON表示。 我想为某些types定制序列化,以便为POJO中不存在的JSON表示添加附加属性(例如,添加一些元数据,引用数据等)。 我知道如何编写我自己的JsonSerializer ,但在这种情况下,我需要显式调用JsonGenerator.writeXXX(..)方法为我的对象的每个属性,而我所需要的只是添加一个额外的属性。 换句话说,我希望能够写下如下内容: @Override public void serialize(TaxonomyNode value, JsonGenerator jgen, SerializerProvider provider) { jgen.writeStartObject(); jgen.writeAllFields(value); // <– The method I'd like to have jgen.writeObjectField("my_extra_field", "some data"); jgen.writeEndObject(); } 或者(甚至更好)以某种方式拦截jgen.writeEndObject()调用之前的序列化,例如: @Override void beforeEndObject(….) { jgen.writeObjectField("my_extra_field", "some data"); } 我想我可以扩展BeanSerializer并覆盖它的serialize(..)方法,但它被宣布是final ,我也找不到一个简单的方法来创build一个BeanSerializer的新实例,而不提供所有的types元数据细节实际上重复一个很好的部分jackson。 所以我放弃了这样做。 我的问题是 – 如何自定义Jackson的序列化,为特定的POJO添加额外的东西到JSON输出中,而不会引入太多的样板代码,并尽可能重复使用默认的Jackson行为。