ItemStack to Gson works except for books and other items & Custom Key String Value

This is a very recent change to the registration of CustomData. I haven’t tried it myself yet. But you should use the new builder method to register data(when developing for Sponge 5.2.0-SNAPSHOT or 6.0.0-SNAPSHOT). But that’s not the problem.

You have to offer the DataManipulator itself the first time. Like stack.offer(new StringData("I am a String key!"));. When saving custom data I never use the keys because of that. I only use it to get it. Maybe that gets changed in the future.