我是这个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&_render=rss&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) 我在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)
请告诉我如何解决这个问题?
我尝试了以下教程: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?
在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中创建多个相关对象?
我想创建一个简单的序列化程序,每个想要的人都可以使用多个答案添加一个问题(他想要多少个)
一个问题 - 多答案
我的模特:
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()方法,我不知道如何编辑
我正在使用JMSSerializer为我正在研究的Symfony2项目创建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
我正在使用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) 我认为两种方法可以测试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)
有什么比另一个更好的?还是有最好的解决方案?
我练习测试驱动的编码 是否需要编写上述测试代码
序列化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可以做到这一点,但是可以做到这两点(自定义格式和完整序列化)吗?
如果我注册一个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)
调用序列化程序.
对我来说,这是一种不一致的行为.它对成员变量的工作方式是查找声明的类型而不是实际的类型,但它对"根"对象的工作方式是不同的.
这是一个错误/缺陷还是预期的行为?如果这是预期的,背后的任何原因?