package com.sys1yagi.swipe.core.tool;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.sys1yagi.swipe.core.entity.index.Index;
import com.sys1yagi.swipe.core.entity.swipe.SwipeDocument;

public class SwipeEntityDecoder {

    private final static String KEY_TYPE = "type";

    private final static String TYPE_INDEX = "net.swipe.list";

    public Index decodeToIndex(Gson gson, String jsonString) {
        JsonObject json = new JsonParser().parse(jsonString).getAsJsonObject();
        if (!json.has(KEY_TYPE)) {
            throw new IllegalArgumentException("Invalid index swipe file. data:" + jsonString);
        }
        if (!TYPE_INDEX.equals(json.get(KEY_TYPE).getAsString())) {
            throw new IllegalArgumentException("Invalid index swipe file. data:" + jsonString);
        }
        return gson.fromJson(json, Index.class);
    }

    public SwipeDocument decodeToSwipe(Gson gson, String jsonString) {
        JsonObject json = new JsonParser().parse(jsonString).getAsJsonObject();
        if (json.has(KEY_TYPE) && TYPE_INDEX.equals(json.get(KEY_TYPE).getAsString())) {
            throw new IllegalArgumentException("Invalid contents swipe file. data:" + jsonString);
        }
        return gson.fromJson(json, SwipeDocument.class);
    }
}

@@ -242,16 +242,45 @@
 ument;%0A%0A
+import org.hjson.JsonValue;%0A%0A
 public c
@@ -418,24 +418,168 @@
 ipe.list%22;%0A%0A
+    //TODO remove it%0A    private String hjson(String jsonString) %7B%0A        return JsonValue.readHjson(jsonString).asObject().toString();%0A    %7D%0A%0A
     public I
@@ -621,32 +621,33 @@
 g jsonString) %7B%0A
+%0A
         JsonObje
@@ -671,32 +671,38 @@
 nParser().parse(
+hjson(
 jsonString).getA
@@ -688,32 +688,33 @@
 json(jsonString)
+)
 .getAsJsonObject
@@ -1151,32 +1151,33 @@
 g jsonString) %7B%0A
+%0A
         JsonObje
@@ -1209,16 +1209,22 @@
 ).parse(
+hjson(
 jsonStri
@@ -1226,16 +1226,17 @@
 nString)
+)
 .getAsJs

Use hjson on SwipeEntityDecoder.