小编Nik*_*iou的帖子

反序列化JSON - 如何忽略根元素?

我正在使用一个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)

或类似的东西...

.net c# json.net deserialization

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

git - 完全删除意外添加的无关远程提交

我手边有一个有趣的问题.在共享团队仓库中,团队成员将一个遥控器添加到一个完全不相关的存储库(这是一个意外).

例如

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)

这有效地在团队回购中创建了两个不相关的子图:

两个子图

左边部分是我们正确的代码,正确的部分是外部存储库.

我们怎样才能完全删除那个正确的部分?它没有造成任何伤害,但它非常烦人,我想摆脱这个子图,最好不留下任何痕迹.

还有,有办法防止这种情况发生吗?

git

7
推荐指数
1
解决办法
184
查看次数

嵌套 JUnit 5 测试的 Spring DataJpaTest 事务行为

我正在使用带有 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)

java spring spring-data-jpa spring-boot junit5

5
推荐指数
0
解决办法
1214
查看次数

函数式编程的 Pythonic 风格

我对 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)

我有两个问题:

  1. Python 有没有办法接近第一种风格?
  2. 在 Python 中执行此操作的惯用方法是什么?

谢谢。

python functional-programming

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

Spring Data JPA 本机查询不遵循投影的命名约定

我正在对 PostgreSQL 数据库使用 Spring Boot 2.1.3.RELEASE、Spring Data JPA。

列名使用下划线(如created_by)和实体bean普通Java驼峰createdBygetCreatedBy()等等。

我正在尝试使用投影界面编写本机查询,但我得到了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() 并且该方法运行良好......

我不想将投影中的所有方法重命名为名称中包含下划线,因为这看起来很丑。有没有办法让本机查询与投影一起工作?

java spring spring-data-jpa

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