1

次のJsonファイルがあり、配列のリストを作成したいのですが、キー名(人、姓など)がわかりません。従業員ユーザーなどの多くのエンティティである可能性がありますが、ファイルの構造はまったく同じでなければなりません、どうやってやるの ?

ファイルは

{
    "Person": [
        {
            "name": "Peter",
            "lastname": "ta",
            "age": 43,
            "sex": "male"
        },
        {
            "name": "Zara",
            "lastname": "treg",
            "age": 25,
            "sex": "female"
        }
    ]
}

私が必要とするのは、このような配列のリストを作成することです

person ,name,peter ,lastname,ta,age,43,sex,male
person ,name,zara ,lastname,treg,age,23,sex,female

....

ファイルを取得するために次のコードから始めましたが、キーの名前がわからないため、続行方法がわかりません。

JSONObject jsonObject= (JSONObject) parser.parse(new FileReader("C:\\General\\jsonperson.txt"));
4

3 に答える 3

2

使用できます

String[] keyNames= JSONObject.getNames(jsonObject);

キーの名前を取得します。 Javadoc

これを使用すると、 getJSONObjectを使用して値を取得できます

これらをループすると、探している配列を構築できます。

于 2013-03-03T15:10:46.067 に答える
1

以下のコードを試すこともできます。

public void performExecute() throws IOException {        
        JsonFactory jsonFactory = new JsonFactory(); 
        ObjectMapper objectMapper = new ObjectMapper(jsonFactory); 
        File file = new File("json.txt"); 
        TypeReference<HashMap<String, Object>> typeReference = new TypeReference<HashMap<String, Object>>() {}; 
        HashMap<String, Object> jsonMap = objectMapper.readValue(file, typeReference); 
        System.out.println("JSON DATA: " + jsonMap); 
    } 

Jackson ライブラリがクラスパスにあることを確認し、コードの使用中に次のクラスをインポートします。

import java.io.File;
import java.io.IOException;
import java.util.HashMap;

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
于 2013-03-03T15:40:09.737 に答える
1

このページの例 4 を確認してください: https://code.google.com/p/json-simple/wiki/DecodingExamples

具体的には、この部分:

Map json = (Map)parser.parse(jsonText, containerFactory);
Iterator iter = json.entrySet().iterator();
System.out.println("==iterate result==");
while(iter.hasNext()){
  Map.Entry entry = (Map.Entry)iter.next();
  System.out.println(entry.getKey() + "=>" + entry.getValue());
}

System.out.println("==toJSONString()==");
System.out.println(JSONValue.toJSONString(json));

これが、 a のエントリを反復処理する方法ですJSONObject。ところで、このライブラリを使用している場合、 aJSONObjectは単なる ajava.util.Mapであり、そのすべてのメソッドを使用できます。そのため、この例では解析結果を a にキャストすることが機能しMapます。

この lib のすべての JSON <-> Java オブジェクト マッピング: https://code.google.com/p/json-simple/wiki/MappingBetweenJSONAndJavaEntities

于 2013-03-03T15:08:57.897 に答える