标签: serializer

简单的XML Serializer无法满足元素

我是这个Simple XML序列化程序的新手,我想解析IGN新闻源.问题是我收到以下错误:

Unable to satisfy @org.simpleframework.xml.Element(data=true, name=description, required=true, type=void) on field 'description' private java.lang.String org.android.entities.Channel.description for class org.android.entities.Channel at line 2
Run Code Online (Sandbox Code Playgroud)

xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.ign.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
   <channel>
      <title>IGN All</title>
      <description>The latest IGN news, reviews and videos about video games, movies, TV, tech and comics</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=5985e93c1e0bc73949d56890f4462756</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=5985e93c1e0bc73949d56890f4462756&amp;_render=rss&amp;page=2" />
      <pubDate>Wed, 17 Oct 2012 20:05:24 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.ign.com/ign/all" /><feedburner:info uri="ign/all" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" …
Run Code Online (Sandbox Code Playgroud)

java xml parsing android serializer

5
推荐指数
1
解决办法
2673
查看次数

WCF - 如何在JSON中序列化和反序列化?

我在WCF中写了几个类(数据契约和服务契约),我试图在JSON中序列化和反序列化.如果我需要以下JSON结构,我将如何创建DataContract:

{
  "response": {
    "locations": {
      "location": [
        {
          "id": "12",
          "name": "Hello",
          "statusid": "78"
        },
        {
          "id": "5",
          "name": "Ann",
          "statusid": "8"
        }
      ]
    },
    "error": "404 error"
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的结构非常简单,在如下所述的位置下可以有几个位置细节.所以我需要得到一个数组/列表到"位置"数据成员,如下所述.目前我只有以下DataContract:

[DataContract]
    public class Response
    {
        [DataMember]
        public string locations { get; set; }

        [DataMember]
        public string error{ get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

请告诉我如何解决这个问题?

.net wcf json serializer

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

Spring Data RedisTemplate:序列化Value和HashValue

我尝试了以下教程:http: //javakart.blogspot.in/2012/12/spring-data-redis-hello-world-example.html

我的问题与此有关: 奇怪的redis键与弹簧数据Jedis

我能够使用StringRedisSerializer解决密钥和hashkeys.

<bean 
id="stringRedisSerializer" 
class="org.springframework.data.redis.serializer.StringRedisSerializer"/>

<bean 
id="redisTemplate" 
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory" 
p:keySerializer-ref="stringRedisSerializer"
p:hashKeySerializer-ref="stringRedisSerializer" 
/>
Run Code Online (Sandbox Code Playgroud)

但是我发现使用序列化程序获取值和hashvalue是一个问题.

我尝试添加这个:

p:valueSerializer-ref="stringRedisSerializer"
p:hashValueSerializer-ref="stringRedisSerializer"
Run Code Online (Sandbox Code Playgroud)

但是提示错误:"用户无法转换为java.lang.String"

任何人都可以分享如何使用序列化器的值/ hashvalue?

spring serializer redis

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

在django rest框架3中使用可写嵌套序列化器创建多个对象

在drf3中,您现在可以通过覆盖create()方法并自己处理validated_data来实现可写嵌套序列化程序

def create(self, validated_data):
    profile_data = validated_data.pop('profile')
    user = User.objects.create(**validated_data)
    Profile.objects.create(user=user, **profile_data)
    return user
Run Code Online (Sandbox Code Playgroud)

如果配置文件是许多关系和validated_data居然会包含多个配置文件.如何在create中创建多个相关对象?

python django serializer django-rest-framework

5
推荐指数
1
解决办法
2499
查看次数

django rest 3.1.1 - 具有"many"属性的一对多序列化程序

我想创建一个简单的序列化程序,每个想要的人都可以使用多个答案添加一个问题(他想要多少个)

一个问题 - 多答案

  • 我希望能够以html格式添加构建,而不是编辑json.

我的模特:

    class Question(models.Model):
         question_text = models.CharField(max_length=30)

    class Answer(models.Model):
         question = models.ForeignKey(Question)
         answer_text = models.CharField(max_length=40)
Run Code Online (Sandbox Code Playgroud)

我的url.py

class AnswerSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Answer
        fields = ('answer_text',)


class QuestionSerializer(serializers.HyperlinkedModelSerializer):

    answers = AnswerSerializer(many=True)
    class Meta:
        model = Question
        fields = ('question_text', 'answers',)

class QuestionViewSet(viewsets.ModelViewSet):
    queryset = Question.objects.all()
    serializer_class = QuestionSerializer
Run Code Online (Sandbox Code Playgroud)

现在,当我运行网络时,我收到消息:

"HTML输入目前不支持列表."

请帮忙 :)

先编辑

即使我删除('many = True')我在尝试发布时收到错误:

/ questions /上的AssertionError .create()默认情况下,该方法不支持可写的嵌套字段..create()为序列化器编写显式方法api_project2.urls.QuestionSerializer,或read_only=True在嵌套的序列化器字段上设置.

这会产生第二个问题:create()方法,我不知道如何编辑

python django serializer models django-rest-framework

5
推荐指数
1
解决办法
1628
查看次数

在Symfony2中运行PHPUnit测试时,JMS Serializer无法读取配置

我正在使用JMSSerializer为我正在研究的S​​ymfony2项目创建JSON响应,并尝试为每个响应构建单元测试,但我正在尝试以下变体:

JMS\Serializer\Exception\RuntimeException: You must define a type for FooBundle\Entity\Bar::$name.
Run Code Online (Sandbox Code Playgroud)

我正在为序列化器使用YML配置,它在生成响应时非常有效.

#src/FooBundle/Resources/config/serializer/Entity.Bar.yml
FooBundle\Entity\Bar:
  exclusion_policy: none
    properties:
        id:
            exclude: true
            type: integer
        name:
            type: string
Run Code Online (Sandbox Code Playgroud)

我想知道是否需要以某种方式预加载配置并找到此链接:http: //jmsyst.com/libs/serializer/master/configuration,它说配置元数据路径但也包含文件后缀:

$serializer =
JMS\Serializer\SerializerBuilder::create()
    ->addMetadataDir($someDir)
    ->build();
Run Code Online (Sandbox Code Playgroud)

我在单元测试中生成序列化器时尝试设置config目录:

$serializer = SerializerBuilder::create()->addMetadataDir('path-to-dir')->build();
Run Code Online (Sandbox Code Playgroud)

但这并没有解决问题,我再次检查了文档页面,它告诉您列出文件的完整路径

"因此,如果您的类名为Vendor\Package\Foo,则元数据文件需要位于$ someDir/Vendor.Package.Foo.(xml | yml)."

但尝试得到生成:

JMS\Serializer\Exception\InvalidArgumentException: The directory "path-to-file" does not exist.
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗

谢谢

serialization phpunit serializer symfony jmsserializerbundle

4
推荐指数
1
解决办法
6158
查看次数

Django REST框架:使用序列化程序实现简单的ForeignKey关系

我正在使用Django REST框架,并尝试映射一个简单的外键关系以提供相关数据以供进一步使用,类似于以下请求:

将反向关系与Django-rest-framework的序列化器一起使用

我收到以下异常,而不是结果:

尝试获取album_name序列化程序中字段的值时出现AttributeError AlbumSerializer。序列化程序字段的名称可能不正确,并且与int实例上的任何属性或键都不匹配。原始异常文本为:'int'对象没有属性'album_name'。

楷模:

    class Album(models.Model):
        album_name = models.CharField(max_length=100)
        artist = models.CharField(max_length=100)

    class Track(models.Model):
        # album = models.ForeignKey(Album, related_name='tracks', on_delete=models.CASCADE)
        album = models.ForeignKey(Album, related_name='tracks', on_delete=models.CASCADE)
        order = models.IntegerField()
        title = models.CharField(max_length=100)
        duration = models.IntegerField()

        class Meta:
            unique_together = ('album', 'order')
            ordering = ['order']

        def __unicode__(self):
            return '%d: %s' % (self.order, self.title)
Run Code Online (Sandbox Code Playgroud)

序列化器:

class AlbumSerializer(serializers.ModelSerializer):
    class Meta:
        model = Album
        fields = ('id', 'album_name', 'artist' )
class TrackSerializer(serializers.ModelSerializer):
    album_id = AlbumSerializer(many=False, read_only=True)
    class …
Run Code Online (Sandbox Code Playgroud)

django foreign-keys serializer django-rest-framework

4
推荐指数
1
解决办法
2030
查看次数

测试Drf序列化程序验证的最佳方法是什么

我认为两种方法可以测试Drf序列化程序验证

以下是我的序列化器验证代码

def validate_md5(self, md5):
    if len(md5) != 40:
        raise serializers.ValidationError("Wrong md5")
    return md5
Run Code Online (Sandbox Code Playgroud)

这是测试代码

1)

def test_wrong_validate_md5_2(self):
    url = reverse('apk-list')
    response = self.client.post(url, {'md5':'test'}, format='json')
    self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)

2)

def test_wrong_validate_md5(self):
    serializer = ApkSerializer(data=self.apk)

    if len(self.apk.get('md5')) != 40:
        self.assertEqual(serializer.is_valid(), False)
    else:
        self.assertEqual(serializer.is_valid(), True)
Run Code Online (Sandbox Code Playgroud)

有什么比另一个更好的?还是有最好的解决方案?

我练习测试驱动的编码 是否需要编写上述测试代码

testing django validation serializer django-rest-framework

4
推荐指数
1
解决办法
1547
查看次数

在Django中自定义Json序列化程序的格式?

序列化django模型对象时,格式如下:

{
    "pk":1,
    "model":"book",
    "fields":{
       "name":"BookName",
       "price":"48",
Run Code Online (Sandbox Code Playgroud)

如果它是这样的话会更直接吗?

{
    "id":1,
    "name":"BookName",
    "price":"48",
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有一种简单的方法可以做到这一点?Json数据将被发送到iPhone等移动设备,客户端对模型名称不感兴趣,或者表中有哪些字段.

类似的帖子Django:自定义序列化选项?建议使用模板,但这是否意味着我需要为所有模型创建模板?

还有一个问题是完全序列化,这与Django的内置序列化器相反,后者仅返回相关字段的主键值.我知道DjangoFullSerializers可以做到这一点,但是可以做到这两点(自定义格式和完整序列化)吗?

django format customization json serializer

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

Gson序列化接口/抽象类

如果我注册一个JsonSerializer带有接口抽象类,如:

GsonBuilder builder = new GsonBuilder()
    .registerTypeAdapter(MyInterface.class, new MySerializer());
Gson gson = builder.create();

MyInterface i = new MyConcreteClass();
String json = gson.toJson(i); // <--- Serializer is not invoked
Run Code Online (Sandbox Code Playgroud)

不会调用序列化程序gson.toJson().

但是,如果我有一个包含MyInterface以下内容的类:

public class MyAnotherClass {
    MyInterface i;
    // ...
}

MyAnotherClass c = new MyAnotherClass()
String json = gson.toJson(c); // <--- Serializer is invoked
Run Code Online (Sandbox Code Playgroud)

调用序列化程序.

对我来说,这是一种不一致的行为.它对成员变量的工作方式是查找声明的类型而不是实际的类型,但它对"根"对象的工作方式是不同的.

这是一个错误/缺陷还是预期的行为?如果这是预期的,背后的任何原因?

java serializer gson

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