我试图使用Json.NET反序列化一些Json对象。 我发现但是,当我反序列化一个没有属性的对象时,我正在寻找没有错误,但是当我访问它们时,属性返回一个默认值。 我能够检测何时反序列化错误types的对象是很重要的。 示例代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; namespace Json_Fail_Test { class Program { [JsonObject(MemberSerialization.OptOut)] private class MyJsonObjView { [JsonProperty("MyJsonInt")] public int MyJsonInt { get; set; } } const string correctData = @" { 'MyJsonInt': 42 }"; const string wrongData = @" { 'SomeOtherProperty': 'fbe8c20b' }"; static […]
我们希望能够从/到C#类的序列化/反序列化JSON,主类有一个多态的子对象的实例。 这样做很容易使用Json.Net的TypeNameHandling.Auto设置。 不过,我们希望没有“$ type”字段。 第一个想法是能够将“$ type”重命名为我们select的值,并将该types的值设置为能够正确映射子types的枚举。 我没有看到这是一个select,但会很高兴听到是否有可能。 第二个想法是沿着以下几行…下面是类的第一遍,顶级类有一个指示器(SubTypeType)的子对象(SubTypeData)中包含的数据types。 我已经钻了一些Json.Net文档,并尝试了一些东西,但没有运气。 我们现在可以完全控制数据定义,但是一旦部署完成,事情就会被locking。 public class MainClass { public SubType SubTypeType { get; set; } public SubTypeClassBase SubTypeData { get; set; } } public class SubTypeClassBase { } public class SubTypeClass1 : SubTypeClassBase { public string AaaField { get; set; } } public class SubTypeClass2 : SubTypeClassBase { public […]
我正在使用Swing在Java中编写应用程序。 我正在尝试实现function,以保存和加载模拟状态,在我正在运行的模拟。 整个模拟保持为一个对象,与Swing断开连接。 我想用这段代码序列化我的模拟类: public void saveSimulationState(String simulationFile) { try { Serializable object = this.sm; ObjectOutputStream objstream = new ObjectOutputStream(new FileOutputStream(simulationFile)); objstream.writeObject(object); objstream.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } 但我得到以下错误(这是巨大的)。 Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at java.io.ObjectStreamClass.processQueue(ObjectStreamClass.java:2234) at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:266) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) at java.util.ArrayList.writeObject(ArrayList.java:570) […]
我想知道是否将数组存储在数据库中是一个好习惯? 我倾向于使用json_encode而不是serialize ,但只是想知道这是一个好主意。 如果没有,那么我可以做一些小的改变,只是用逗号来打乱数组。
可能重复: 为什么XML-Serializable类需要一个无参数的构造函数 我试图在我的代码中序列化一个元组: List<List<Tuple<String, CodeExtractor.StatementNode>>> results = null; results = extractor.ExtractSourceCode(sourceCode); FileStream fs = new FileStream(@"C:\Projects\Test\ast.xml", FileMode.Create); XmlSerializer formatter = new XmlSerializer( typeof(List<List<Tuple<String, CodeExtractor.StatementNode>>>)); formatter.Serialize(fs, results); fs.Close(); 但它是失败的,并抓住这样的例外: System.Tuple`2 [System.String,CodeExtractor.StatementNode]不能被序列化,因为它没有无参数的构造函数。 我确信CodeExtractor.StatementNode可以被序列化。
我已经开始了我的第一个android应用程序的工作,并有一个应用程序的基础上处理多层图像。 我能够导出一个平面版本的项目文件作为PNG,但我希望能够保存分层的图像以供日后编辑(包括应用于某些图层,如基于文本的图层的任何选项)。 无论如何,我已经确保需要写入文件的类是“可序列化的”,但是由于android.graphics.Bitmap不可序列化的缘故,已经遇到了一些障碍。 下面的代码实际上是将位图作为一个PNG输出到一个ByteArray中,并且应该将其作为“readObject”的一部分进行读取。 但是,当代码运行时 – 我可以validation读入的“imageByteArrayLength”variables与输出的相同,但“位图图像”始终为空。 任何帮助将不胜感激。 谢谢阅读。 private String title; private int width; private int height; private Bitmap sourceImage; private Canvas sourceCanvas; private Bitmap currentImage; private Canvas currentCanvas; private Paint currentPaint; private void writeObject(ObjectOutputStream out) throws IOException{ out.writeObject(title); out.writeInt(width); out.writeInt(height); ByteArrayOutputStream stream = new ByteArrayOutputStream(); currentImage.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] imageByteArray = stream.toByteArray(); int […]
JSON.stringify(eventObject); 得到: TypeError: Converting circular structure to JSON dojox.json.ref.toJson(eventObject); 得到: TypeError: Accessing selectionEnd on an input element that cannot have a selection. 是否有一些库/代码可以用来完成它?
json.net(newtonsoft) 我正在浏览文档,但是我找不到任何关于此的最佳方法。 public class Base { public string Name; } public class Derived : Base { public string Something; } JsonConvert.Deserialize<List<Base>>(text); 现在我已经在序列化列表中派生了对象。 如何反序列化列表并获取派生types?
我想写一个对象到CSV文件。 对于XML,我们有这样的XStream 所以,如果我想将对象转换为CSV,我们有任何这样的库? 编辑: 我想通过我的Bean的列表到一个方法,应该写入所有的字段的CSV到CSV。
我需要将以JSON表示的一些JavaScript对象反序列化为适当的C#类。 鉴于自动属性的好处,我宁愿让他们在这些类,而不是只有字段。 不幸的是,.NET序列化引擎(至less在默认情况下)完全忽略了反序列化的自动属性,只关心后台字段,这在JavaScript对象中显然不存在。 鉴于没有标准的方式来命名支持字段 ,说实话,我甚至不想打扰“让我们创build一个看起来像它有C#支持领域的JavaScript对象”的方法,因为它听起来有点肮脏,唯一的方法我可以将JavaScript字段序列化为C#自动属性,如果我可以强制序列化引擎以某种方式忽略后台字段并直接使用该属性。 不幸的是,我无法弄清楚这是如何完成的,或者是否可以完成。 任何想法,将不胜感激。 编辑 :这里是一个例子: 使用Javascript: function Cat() { this.Name = "Whiskers"; this.Breed = "Tabby"; } var cat = new Cat(); 然后将其序列化为“{Name:'Whiskers'}”。 C#类: [Serializable()] public class Cat { public string Name { get; set; } public string Breed { get; set; } } 而反序列化代码,失败了: new DataContractJsonSerializer(typeof(Cat)).ReadObject(inputStream); 从例外情况看,它显然是因为它正在寻找支持领域而失败。 编辑2 :这是例外,如果有帮助(没有内部例外): System.Runtime.Serialization.SerializationException “数据协定types”Test.Cat“不能被反序列化,因为找不到所需的数据成员<Name>k__BackingField, […]