0

Java 6、Tomcat 7、Jersey 1.15、Jackson 2.0.6 (FasterXml maven repo から)、および Google GSON 2.2.2 を使用して、JSON 文字列をきれいに印刷しようとしているので、curl -X GET コマンド ラインによってインデントされます。 .

次のアーキテクチャを持つ単純な Web サービスを作成しました。

私の POJO (モデル クラス):

Family.java

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Family {
    private String father;
    private String mother;

    private List<Children> children;

    // Getter & Setters
}

Children.java:

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Children {
    private String name;
    private String age;
    private String gender;

    // Getters & Setters
}

ユーティリティ クラスを使用して、次のように POJO をハード コードすることにしました。

public class FamilyUtil {

    public static Family getFamily() {
        Family family = new Family();
        family.setFather("Joe");
        family.setMother("Jennifer");

        Children child = new Children();
        child.setName("Jimmy");
        child.setAge("12");
        child.setGender("male");
        List<Children> children = new ArrayList<Children>();

        children.add(child);

        family.setChildren(children);
        return family;
    }
}

私のウェブサービス:

import java.io.IOException;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jettison.json.JSONException;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.myapp.util.FamilyUtil;

@Path("")
public class MyWebService {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public static String getFamily() throws IOException, 
                                            JsonGenerationException, 
                                            JsonMappingException, 
                                            JSONException, 
                                            org.json.JSONException {
            ObjectMapper mapper = new ObjectMapper(); 
            String uglyJsonString = mapper.writeValueAsString(FamilyUtil.getFamily());
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            JsonParser parser = new JsonParser();
            JsonElement jsonElement = parser.parse(uglyJsonString);
            System.out.println(gson.toJson(jsonElement));
            return gson.toJson(jsonElement);
    }
}

これを使用して実行すると:

curl -X GET http://localhost:8080/mywebservice

私はEclipseのコンソールでこれを取得します(これはまさにcurlコマンドから欲しいものです):

{
  "father": "Joe",
  "mother": "Jennifer",
  "children": [
    {
      "name": "Jimmy",
      "age": "12",
      "gender": "male"
    }
  ]
}

しかし、上記のコマンド ライン curl コマンドから、次のようになります (\n の後に 4 つのスペースがありますが、JavaRanch のフォーラムには表示されません)。

"{\n  \"father\": \"Joe\",\n  \"mother\": \"Jennifer\",\n  \"children\": [\n    {\n      \"name\": \"Jimmy\",\n      \"age\": \"12\",\n      \"gender\": \"male\"\n    }\n  ]\n}"

curl コマンドを使用して、JSON フォーマットを Eclipse のコンソールで取得しているものと同じにするにはどうすればよいですか?

これを読んでくれてありがとう...

4

0 に答える 0