我正在使用一个WCF服务,该服务返回包含在'd'根元素内的JSON结果.JSON响应如下所示:
{"d":[
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":38076567552,
"Drive":"C:\\",
"TotalSpace":134789197824
},
{
"__type":"DiskSpaceInfo:#Diagnostics.Common",
"AvailableSpace":166942183424,
"Drive":"D:\\",
"TotalSpace":185149157376
}
]}
Run Code Online (Sandbox Code Playgroud)
我不想使用动态类型,我有我的类Diagnostics.Common.DiskSpaceInfo,我想在反序列化时使用.
我正在使用Json.NET(Netwonsoft JSON).
问题是如何告诉它忽略根元素(即'd'元素)并解析其中的内容.
我到目前为止最好的解决方案是使用匿名类型:
DiskSpaceInfo[] result = JsonConvert.DeserializeAnonymousType(json, new
{
d = new DiskSpaceInfo[0]
}).d;
Run Code Online (Sandbox Code Playgroud)
这实际上有效,但我不太喜欢它.还有另外一种方法吗?我想要的是:
DiskSpaceInfo[] result = JsonConvert.Deserialize(json, skipRoot: true);
Run Code Online (Sandbox Code Playgroud)
或类似的东西...
我手边有一个有趣的问题.在共享团队仓库中,团队成员将一个遥控器添加到一个完全不相关的存储库(这是一个意外).
例如
git remote add foreign-remote https://github.com/some-open-source-project
Run Code Online (Sandbox Code Playgroud)
他检查了那个仓库的主分支并将其推送到我们的仓库.
例如
git checkout foreign-remote/master
git checkout -b experiment
git push origin experiment
Run Code Online (Sandbox Code Playgroud)
这有效地在团队回购中创建了两个不相关的子图:

左边部分是我们正确的代码,正确的部分是外部存储库.
我们怎样才能完全删除那个正确的部分?它没有造成任何伤害,但它非常烦人,我想摆脱这个子图,最好不留下任何痕迹.
还有,有办法防止这种情况发生吗?
我正在使用带有 JUnit 5 的 Spring Boot 2,为 JpaRepository 编写 DataJpaTest。测试针对真实的 PostgreSQL 数据库(非嵌入式,非内存)运行。
根据文档,默认情况下每个测试都在一个事务中并自动回滚。事实上,这就是我在不做任何额外努力的情况下得到的行为。这是我的测试最初的样子:
@ExtendWith(SpringExtension.class)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@DataJpaTest
class MyRepositoryIT {
@Autowired
private TestEntityManager entityManager;
@Autowired
private MyRepository myRepository;
@Test
void save() {
// arrange
MyEntity entity = new MyEntity().withName("Nikolaos");
// act
MyEntity saved = myRepository.save(entity);
// assert
assertThat(saved.getId()).isGreaterThan(0);
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作,实际上在测试输出中我可以看到它正在回滚事务:
20180822T085911 main INFO c.u.m.a.d.MyRepositoryIT Started MyRepositoryIT in 8.352 seconds (JVM running for 10.726)
20180822T085911 main INFO o.s.t.c.t.TransactionContext Began transaction (1) for test context [DefaultTestContext@1a8e9ed9 testClass = MyRepositoryIT, testInstance = …Run Code Online (Sandbox Code Playgroud) 我对 Python 没有太多经验。我正在尝试以函数式风格进行编码,就像我习惯的 Java 和 JavaScript 一样,例如
var result = getHeroes('Jedi')
.map(hero => { hero: hero, movies: getMovies(hero) })
.filter(x => x.movies.contains('A New Hope'));
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 Python 中做类似的事情,但我无法获得相同的链接样式。我不得不将其分解为两个我不喜欢的陈述:
tmp = ((hero, get_movies(hero)) for hero in get_heroes('jedi'))
result = ((hero, movies) for (hero, movies) in tmp if movies.contains('A New Hope')
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
谢谢。
我正在对 PostgreSQL 数据库使用 Spring Boot 2.1.3.RELEASE、Spring Data JPA。
列名使用下划线(如created_by)和实体bean普通Java驼峰createdBy,getCreatedBy()等等。
我正在尝试使用投影界面编写本机查询,但我得到了null值。例子:
public class MyEntity {
private String createdBy;
// getters and setters etc
// more fields here
}
public interface MyProjection {
String getCreatedBy();
}
public interface MyRepository extends JpaRepository<MyEntity, Long> {
@Query(value = "
SELECT DISTINCT cool_table.* FROM cool_table INNER JOIN
// more SQL things", nativeQuery = true
)
List<MyProjection> searchNative(String filter);
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我为下划线分隔的列返回空值(它适用于非本地查询)。
作为一项实验,我在我的投影中添加了一个名为的方法,getCreated_by()
并且该方法运行良好......
我不想将投影中的所有方法重命名为名称中包含下划线,因为这看起来很丑。有没有办法让本机查询与投影一起工作?