2016-08-20 15 views
0

私は以下のjsonをString形式で使用しています。どのようにそれをJavaオブジェクトに変換するのですか?Json StringをJava Objectに変換するには?

JSON Srting

String allCameraList = [{ 
    "name": "Camera1", 
    "displayURL": "Stream-1" 
}, { 
    "name": "Camera2", 
    "displayURL": "Stream-3" 
}, { 
    "name": "Camera4", 
    "displayURL": "Stream-7" 
}, { 
    "name": "Camera3", 
    "displayURL": "Stream-5" 
}, { 
    "name": "Camera5", 
    "displayURL": "Stream-10" 
}, { 
    "name": "Camera6", 
    "displayURL": "Stream-12" 
}] 

のJava Entityクラス

public class CameraDetails 
{ 
    private String name; 
    private String displayURL; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getDisplayURL() { 
     return displayURL; 
    } 

    public void setDisplayURL(String displayURL) { 
     this.displayURL = displayURL; 
    }} 

私は、次のようなJSONパーサーを使用しようとすると:

JsonParser parser = new JsonParser(); 
    String json = parser.parse(allCameraList) 
      .getAsJsonObject() 
      .getAsJsonObject("name") 
      .toString(); 

それは、次のEXCEPを投げましたン:

java.lang.IllegalStateException: Not a JSON Object 

私のJSON文字列が{[ないで始めていることに注意してください。

答えて

0

文字列をJson配列に変換できます。

ObjectMapper mapper = new ObjectMapper(); 
String jsonInString = mapper.writeValueAsString(allCameraList); 
JSONArray json = (JSONArray) parser.parse(jsonInString); 

これも見てください。

import org.codehaus.jackson.map.ObjectMapper; 

static ObjectMapper mapper=new ObjectMapper(); 
public ObjectMapper getMapperObject(){ 
    return mapper; 
} 

mapper=TypeConvertion.getMapperObject(); 
String jsonString=mapper.writeValueAsString(allCameraList); 
List<CameraDetails> newMSExp=mapper.readValue(jsonString, new TypeReference<List<CameraDetails>>() {}); 
return newMSExp; 
0

実際にはエスケープ文字 '/'と二重引用符を使用しないと文字列を定義することはできません。あなたは、ファイルからそれを読んで、以下のように文字列に変換することができます

private static String readFile(String path, Charset encoding) 
     throws IOException 
{ 
    byte[] encoded = Files.readAllBytes(Paths.get(path)); 
    return new String(encoded, encoding); 
} 

あなたが次

符号化方式として StandardCharsets.UTF_8を使用することができ、あなたが取得した文字列に対して後処理を行うことができます。あなたのユースケースでは、以下のコードが有効です。

private static String postProcess(String string) { 
    String result; 
    result = string.substring(1,string.length()-1); 
    return "{" + result + "}"; 
} 

これらの手順を実行すると、JSONとして解析できます。