public static Project load(String json, Decoder decoder) {
        
        requireNonNull(json, "No json value specified.");
        
        try {
            final Map<String, Object> root = decoder.decode(json);
            
            @SuppressWarnings("unchecked")
            final Map<String, Object> data = 
                (Map<String, Object>) root.get(ROOT);

            if (!data.containsKey(ProjectUtil.APP_ID)) {
                data.put(ProjectUtil.APP_ID, UUID.randomUUID().toString());
            }
            
            return Project.create(data);
        } catch (final Exception ex) {
            throw new SpeedmentConfigException(ex);
        }
    }
Loads a new {@link Project} from the specified JSON string.

@param json      the input json
@param decoder   the decoder to use
@return          the parsed project

@throws SpeedmentConfigException  if the file couldn't be loaded
runtime-parent/runtime-config/src/main/java/com/speedment/runtime/config/util/DocumentTranscoder.java