我将对象作为JSON字符串存储在我的数据库中.我想制作一个暴露这些字符串的REST服务.然而,当我编写我的方法时,我回来的字符串会引用它们的引号.例如,我已经包含了一个返回String的方法,
@RequestMapping(value = "test", method = RequestMethod.GET)
public @ResponseBody
String getTest() {
return "{\"a\":1, \"b\":\"foo\"}";
}
Run Code Online (Sandbox Code Playgroud)
但是当我在浏览器中调用此方法时,我得到一个"{\"a \":1,\"b \":\"foo \"}"当我真正想要发生的是{"a":1 ,"b":"foo"}.我认为"String"作为返回类型可能是问题所在,但我还能做些什么呢?包装器类做同样的事情:
{
"value" : "{\"a\":1, \"b\":\"foo\"}"
}
Run Code Online (Sandbox Code Playgroud)
我可以序列化然后返回对象,但这看起来有点荒谬.这可能是我的配置文件的相关部分:
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
converters.add(mappingJacksonHttpMessageConverter());
}
@Bean
MappingJacksonHttpMessageConverter mappingJacksonHttpMessageConverter() {
MappingJacksonHttpMessageConverter mappingJacksonHttpMessageConverter = new MappingJacksonHttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
mappingJacksonHttpMessageConverter.setObjectMapper(objectMapper);
mappingJacksonHttpMessageConverter.setPrettyPrint(true);
return mappingJacksonHttpMessageConverter;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
编辑:如下所示,似乎字符串是双重编码.在我的配置中注释掉这两个类可以解决这个问题.但是,我仍然有其他地方我想要返回对象,并希望保持那些运行通过我知道在哪里配置的常见序列化bean.所以我认为我的选择是:a)自己做所有的序列化.所有方法都返回Strings,那些已经是JSON的方法返回自己,而那些作为对象的方法都返回JSONUtil.toJson(object).我不喜欢这种方法,但我知道它会起作用.b)使用类似于以下内容的包装类:
public static class Wrapper {
@JsonRawValue
private final String value;
}
Run Code Online (Sandbox Code Playgroud)
这导致前面的尴尬"价值"虽然没有实际意义.
基本上我想要的是@JsonRawValue,但让它在RequestMapping方法而不是属性上工作.思考?意见?其他建议?
我通常使用objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL),因为我从不希望序列化我的类的空值.除了现在我应该写出一个特定的字段,即使它是null.我可以在这一个字段上添加一个快速注释来覆盖该字段的Inclusion.NON_NULL属性吗?有什么好办法实现这个目标?
我正在尝试为厨师石墨回购写一个包装食谱
在配方carbon.rb中,出现以下行:
template "#{node['graphite']['base_dir']}/conf/storage-schemas.conf" do
owner node['apache']['user']
group node['apache']['group']
end
Run Code Online (Sandbox Code Playgroud)
在templates/default/storage-schemas.conf中有一个不受我喜欢的storage-schemas.conf文件.我可以内联编辑文件并实现我想要的,但如果我希望能够在不发生合并冲突的情况下保持我的仓库更新,它似乎不是一个好厨师的做法.所以我想知道我是否可以用包装食谱来解决这个问题.
我的第一个虽然是这样的
include_recipe "graphite"
template "#{node['graphite']['base_dir']}/conf/storage-schemas.conf" do
owner node['apache']['user']
group node['apache']['group']
end
Run Code Online (Sandbox Code Playgroud)
我将在基本配方完成后重新运行命令,并将我想要的文件放在wrappercookbook/templates/storage-schemas.conf.erb中.这是一种常见做法吗?它感觉不太干,但我想不出更干净的方式.
当你签出一个包含svn externals的git存储库时,它会忽略它们.人们所做的是创建许多脚本,其中许多脚本在这个问题中提到我如何使用git-svn保持svn:external是最新的?.问题是虽然许多脚本都浮在互联网上,但我还没有找到一个实际上很强大的脚本.通过健壮,我的意思是:
因为这些是我的存储库的2个问题,似乎会导致大多数脚本失效.我没兴趣使用smartgit.
有这样的剧本吗?有没有人有一个"几乎存在"的脚本可以很快适应这两件事?
如果我在java 8中有并行流,并且我使用anyMatch终止,并且我的集合有一个与谓词匹配的元素,我试图弄清楚当一个线程处理这个元素时会发生什么.
我知道anyMatch是短路的,因此我不希望在处理匹配元素后处理更多元素.我的困惑是关于其他线程发生了什么,可能是在处理元素的中间.我可以想到3个看似合理的场景:a)他们被打断了吗?b)他们是否继续处理他们正在处理的元素,然后,一旦所有线程都无所事事,我得到我的结果?c)我是否得到了我的结果,但是处理其他元素的线程继续处理这些元素(但是一旦完成就不再采用其他元素)?
我有一个长期运行的谓词,一旦我知道一个元素匹配就很快终止它.我担心一点,因为我在文档中找不到它可能是依赖于实现的东西的信息,这也是很好的.
谢谢
我有几百万套C的大集合.我的集合的元素来自大约2000个可能元素的宇宙.我需要知道,对于给定的集合,s,C中的集合与s的交集最大?(或者k在C中设置k个最大的交叉点).我将依次针对不同的s进行许多这些查询.
我知道这样做的显而易见的方法是循环遍历C中的每个集合并计算交集并取最大值.是否有任何智能数据结构/编程技巧可以加快我的搜索速度?如果我能比O(C)更快地做到这一点会很棒.
编辑:大致的答案也没关系
我想为我的django webapp使用firebase身份验证.为了达到这个目的,我想我需要编写一个自定义的auth后端 - 是吗?我没有看到任何已经执行此操作的库 - django-allauth看起来非常接近,但我对firebase提供的电话号码验证感兴趣.
我也对User模型和request.user或user.is_authenticated等函数会发生什么感到困惑.现在我使用身份验证和登录功能 - django如何知道用户是通过firebase登录的?我还会为每个用户创建一个用户模型吗?
谢谢
我有一个图表,我希望某些系列在图例中不可点击,但其他系列可点击。这很简单,因为有一个 legendItemClick 事件,我无法根据系列做任何事情。一个例子在这里:http : //jsfiddle.net/9PqyG/3/
我的问题是鼠标指针仍然从箭头变为可点击链接手指针,我不希望任何人认为这是可点击的。我知道我可以更改 itemHoverStyle 参数以使箭头出现在所有图例项中,但这会为每个系列更改它。我可以只在特定系列中实现这一点吗?
首先,在我被大吼之前,我想要明确一些事情:我没有计划编写任何能够使用这种控制流程的代码; 它显然很可怕.忘记一个用例,这是一个关于它是否可能的问题:
我想知道是否有可能知道调用堆栈的某个位置,是否在catch块中为特定异常调用了一个函数.
假设我有一个功能:
foo() {
try {
something
}
catch (SuperException s) {
bar()
}
Run Code Online (Sandbox Code Playgroud)
因此,如果没有对bar的方法签名的控制,并且给定的bar也被许多其他函数调用,那么如果在catch块中调用超级函数,那么bar的行为会不同吗?(并且不,被foo调用不是一个充分条件,它是重要的超级例外)
jackson ×2
algorithm ×1
chef-infra ×1
django ×1
firebase ×1
git ×1
git-svn ×1
highcharts ×1
intersection ×1
java ×1
java-8 ×1
reflection ×1
set ×1
spring-mvc ×1