标签: serialization

检测到自引用循环 - 从WebApi返回数据到浏览器

我正在使用Entity Framework并且在向浏览器中获取父数据和子数据时遇到问题.这是我的课程:

 public class Question
 {
    public int QuestionId { get; set; }
    public string Title { get; set; }
    public virtual ICollection<Answer> Answers { get; set; }
}

public class Answer
{
    public int AnswerId { get; set; }
    public string Text { get; set; }
    public int QuestionId { get; set; }
    public virtual Question Question { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我使用以下代码返回问题和答案数据:

    public IList<Question> GetQuestions(int subTopicId, int questionStatusId)
    {
        var questions = _questionsRepository.GetAll()
            .Where(a => a.SubTopicId == subTopicId …
Run Code Online (Sandbox Code Playgroud)

c# serialization entity-framework json.net asp.net-web-api

78
推荐指数
6
解决办法
8万
查看次数

"Unparseable date:1302828677828"试图用Gson反序列化从服务器收到的毫秒格式日期

经过4个小时不停试图解决问题,我决定在这里询问是否有人可以帮助我.

问题是我的Android客户端在尝试反序列化从服务器收到的数据时会抛出"Unparseable:1302828677828"异常.

我想知道是否可以使用Gson反序列化毫秒格式的日期.

serialization android json date gson

76
推荐指数
1
解决办法
3万
查看次数

如何使用ArrayList <Parcelable>正确实现Parcelable?

我上课时遇到了麻烦Parcelable.麻烦的是,我正在尝试写一个包中的一个成员作为一个ArrayList<Parcelable>对象.的ArrayListSerializable,和对象(ZigBeeDev)在列表中的Parcelable.

这是相关代码:

package com.gnychis.coexisyst;

import java.util.ArrayList;
import java.util.Iterator;

import android.os.Parcel;
import android.os.Parcelable;

public class ZigBeeNetwork implements Parcelable {

    public String _mac;             // the source address (of the coordinator?)
    public String _pan;             // the network address
    public int _band;               // the channel
    ArrayList<Integer> _lqis;       // link quality indicators (to all devices?)
    ArrayList<ZigBeeDev> _devices;  // the devices in the network

    public void writeToParcel(Parcel out, int flags) {
        out.writeString(_mac);
        out.writeString(_pan);
        out.writeInt(_band); …
Run Code Online (Sandbox Code Playgroud)

java serialization android parcelable

76
推荐指数
3
解决办法
5万
查看次数

如何解决由hibernate双向映射引起的json序列化器中的循环引用?

我正在编写一个序列化程序来将POJO序列化为JSON,但却陷入循环引用问题.在hibernate双向一对多关系中,父引用子和子引用回父,这里我的序列化器死了.(参见下面的示例代码)
如何打破这个循环?我们可以获取对象的所有者树,以查看对象本身是否存在于其自己的所有者层次结构中的某个位置?任何其他方式来查找引用是否将是循环的?或任何其他想法来解决这个问题?

java serialization json hibernate

75
推荐指数
5
解决办法
9万
查看次数

避免对未获取的惰性对象进行Jackson序列化

我有一个简单的控制器返回一个User对象,这个用户的属性坐标有hibernate属性FetchType.LAZY.

当我尝试获取此用户时,我总是必须加载所有坐标以获取用户对象,否则当Jackson尝试序列化时,用户会抛出异常:

com.fasterxml.jackson.databind.JsonMappingException:无法初始化代理 - 没有会话

这是因为杰克逊试图获取这个未被攻击的对象.这是对象:

public class User{

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
    @JsonManagedReference("user-coordinate")
    private List<Coordinate> coordinates;
}

public class Coordinate {

    @ManyToOne
    @JoinColumn(name = "user_id", nullable = false)
    @JsonBackReference("user-coordinate")
    private User user;
}
Run Code Online (Sandbox Code Playgroud)

和控制器:

@RequestMapping(value = "/user/{username}", method=RequestMethod.GET)
public @ResponseBody User getUser(@PathVariable String username) {

    User user = userService.getUser(username);

    return user;

}
Run Code Online (Sandbox Code Playgroud)

有办法告诉杰克逊不要序列化未被攻击的物体吗?我一直在寻找3年前发布的其他答案实现jackson-hibernate-module.但可能通过新的杰克逊功能可以实现.

我的版本是:

  • 春天3.2.5
  • Hibernate 4.1.7
  • 杰克逊2.2

提前致谢.

java serialization spring hibernate jackson

75
推荐指数
7
解决办法
7万
查看次数

序列化私有成员数据

我正在尝试将对象序列化为具有许多属性的XML,其中一些属性是只读的.

public Guid Id { get; private set; }
Run Code Online (Sandbox Code Playgroud)

我已经标记了类[Serializable],我已经实现了ISerializable接口.

下面是我用来序列化对象的代码.

public void SaveMyObject(MyObject obj)
{
    XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
    TextWriter tw = new StreamWriter(_location);
    serializer.Serialize(tw, obj);
    tw.Close();
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它会在第一行显示此消息.

InvalidOperationException未处理:无法生成临时类(result = 1).错误CS0200:无法将属性或索引器"MyObject.Id"分配给 - 它是只读的

如果我将Id属性设置为public,则可以正常工作.有人可以告诉我,如果我正在做某事,或者至少是否可能吗?

.net c# xml serialization serializable

73
推荐指数
2
解决办法
6万
查看次数

使用XmlSerializer将空xml属性值反序列化为nullable int属性

我从第三方获得了一个xml,我需要将它反序列化为C#对象.此xml可能包含值为整数类型或空值的属性:attr ="11"或attr ="".我想将此属性值反序列化为类型为可空整数的属性.但XmlSerializer不支持反序列化为可空类型.在使用InvalidOperationException创建XmlSerializer期间,以下测试代码失败{"有一个错误反映了类型'TestConsoleApplication.SerializeMe'."}.

[XmlRoot("root")]
public class SerializeMe
{
    [XmlElement("element")]
    public Element Element { get; set; }
}

public class Element
{
    [XmlAttribute("attr")]
    public int? Value { get; set; }
}

class Program {
    static void Main(string[] args) {
        string xml = "<root><element attr=''>valE</element></root>";
        var deserializer = new XmlSerializer(typeof(SerializeMe));
        Stream xmlStream = new MemoryStream(Encoding.ASCII.GetBytes(xml));
        var result = (SerializeMe)deserializer.Deserialize(xmlStream);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将'Value'属性的类型更改为int时,反序列化失败并出现InvalidOperationException:

XML文档中存在错误(1,16).

任何人都可以建议如何将具有空值的属性反序列化为可空类型(作为null),同时将非空属性值反序列化为整数?有没有任何技巧,所以我不必手动对每个字段进行反序列化(实际上有很多)?

来自ahsteele的评论后更新:

  1. Xsi:nil属性

    据我所知,此属性仅适用于XmlElementAttribute - 此属性指定元素没有内容,无论是子元素还是正文.但我需要找到XmlAttributeAttribute的解决方案.无论如何我不能改变xml,因为我无法控制它.

  2. bool*指定的属性

    仅当属性值为非空或缺少属性时,此属性才有效.当attr具有空值(attr ='')时,XmlSerializer构造函数失败(如预期的那样).

    public class Element
    {
        [XmlAttribute("attr")]
        public int Value { get; …
    Run Code Online (Sandbox Code Playgroud)

.net xml serialization nullable

73
推荐指数
3
解决办法
6万
查看次数

73
推荐指数
3
解决办法
3万
查看次数

如何在java中序列化列表?

我想深入克隆一个List.因为我们有一个方法

// apache commons method. This object should be serializable
SerializationUtils.clone ( object ) 
Run Code Online (Sandbox Code Playgroud)

所以现在克隆我的列表我应该首先将其转换为可序列化.是否可以将List转换为可序列化列表?

java collections serialization apache-commons

72
推荐指数
3
解决办法
15万
查看次数

jQuery serialize不会注册复选框

我正在使用jQuery.serialize来检索表单中的所有数据字段.

我的问题是它没有检索未选中的复选框.

它包括:

<input type="checkbox" id="event_allDay" name="event_allDay" class="checkbox" checked="checked" />
Run Code Online (Sandbox Code Playgroud)

但不是这个

<input type="checkbox" id="event_allDay" name="event_allDay" class="checkbox" />
Run Code Online (Sandbox Code Playgroud)

如何获取未选中的复选框的"值"?

jquery serialization

72
推荐指数
5
解决办法
9万
查看次数