4

重複の可能性

JSONを解析し、その値を配列に変換する方法は?

[
   [
      "sn1",
      "Liquid_level",
      "85"
   ],
   [
      "sn2",
      "Liquid_level,Temperature",
      "95"
   ],
   [
      "sn2",
      "Liquid_level,Temperature",
      "50"
   ],
   [
      "sn3",
      "Liquid_level",
      "85.7"
   ],
   [
      "sn4",
      "Liquid_level",
      "90"
   ],
   [
      "sn5",
      "Volt_meter",
      "4.5"
   ],
   [
      "sn6",
      "Temperature",
      "56"
   ],
   [
      "sn8",
      "Liquid_level",
      "30"
   ]
]

これは、Java配列に取得したいデータです(データを表示する動的テーブルを作成するため)。

これを使用してテキスト値を取得できます

String response = null;
            try {
                response = CustomHttpClient.executeHttpPost("http://test.tester.com/check.php", postParameters);
                String res=response.toString();}
4

3 に答える 3

4

JSONを解析してその値を配列に変換する方法からのように?

あなたの例のために:

{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]}

あなたはこの効果の何かをしなければならないでしょう:

JSONObject myjson = new JSONObject(the_json);
JSONArray the_json_array = myjson.getJSONArray("profiles");

これにより、配列オブジェクトが返されます。

次に、反復は次のようになります。

    int size = the_json_array.length();
    ArrayList<JSONObject> arrays = new ArrayList<JSONObject>();
    for (int i = 0; i < size; i++) {
      JSONObject another_json_object = the_json_array.getJSONObject(i);
            //Blah blah blah...
            arrays.add(another_json_object);
    }

//Finally
JSONObject[] jsons = new JSONObject[arrays.size()];
arrays.toArray(jsons);

//The end...

charAt(0)データが配列であるかどうかを判断する必要があります(文字で始まるものをチェックするだけです[)。

お役に立てれば。

https://stackoverflow.com/users/251173/the-elite-gentlemanへのクレジット

于 2012-11-19T10:11:13.403 に答える
1

最初にこのjson配列を解析し、ArrayListに格納します

              try 
             {
                      ArrayList<String> arl= new ArrayList<String>();
                      JSONObject jobj = new JSONObject(signedData);
                      JSONArray jroot = jobj.getJSONArray("xxxxx");

              for(int i=0;i<jroot.length();i++)
              {

                  JSONObject jElement = jroot.getJSONObject(i);

                  arl.add(jElement.getString("xxxxx"));


              }


          }

          catch (Exception e)
          {
               Log.v("log", "Error parsing data " + e.toString());

          }

次に、forloopストアを使用して配列を文字列化します。

于 2012-11-19T10:11:52.340 に答える
1

JSONからJavaへの変換は、タスクの実行に使用しているライブラリに大きく依存します。ここでの他の答えはorg.jsonライブラリを使用しますが、それは非常に遅いので、ほとんどのオタクはその使用に対して激しく反応します。私が知っている最速のライブラリはジャクソンですが、私は個人的にGoogle-GSONを好みます。それは十分に高速でありながら、非常に使いやすいからです。

サンプルの文字列を見ると、文字列の配列の配列があるようです。Gsonでは、それらをsのCollectionaとして考えたいと思います。サンプルコードは次のとおりです。CollectionString

import java.lang.reflect.Type;
import java.util.Collection;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;


public class Main {
    public static void main(String[] args) {
        // your sample JSON string, converted to a java string
        String json = "[\n   [\n      \"sn1\",\n      \"Liquid_level\",\n      \"85\"\n   ],\n   [\n      \"sn2\",\n      \"Liquid_level,Temperature\",\n      \"95\"\n   ],\n   [\n      \"sn2\",\n      \"Liquid_level,Temperature\",\n      \"50\"\n   ],\n   [\n      \"sn3\",\n      \"Liquid_level\",\n      \"85.7\"\n   ],\n   [\n      \"sn4\",\n      \"Liquid_level\",\n      \"90\"\n   ],\n   [\n      \"sn5\",\n      \"Volt_meter\",\n      \"4.5\"\n   ],\n   [\n      \"sn6\",\n      \"Temperature\",\n      \"56\"\n   ],\n   [\n      \"sn8\",\n      \"Liquid_level\",\n      \"30\"\n   ]\n]";

        // instantiate a Gson object
        Gson gson = new Gson();

        // define the type of object you want to use it in Java, which is a collection of a collection of strings
        Type collectionType = new TypeToken<Collection<Collection<String>>>(){}.getType();

        // happiness starts here
        Collection<Collection<String>> stringArrays = gson.fromJson(json, collectionType);

        // simply print out everything
        for (Collection<String> collection : stringArrays) {
            for (String s : collection) {
                System.out.print(s + ", ");
            }
            System.out.println();
        }
    }
}

そして出力:

sn1, Liquid_level, 85, 
sn2, Liquid_level,Temperature, 95, 
sn2, Liquid_level,Temperature, 50, 
sn3, Liquid_level, 85.7, 
sn4, Liquid_level, 90, 
sn5, Volt_meter, 4.5, 
sn6, Temperature, 56, 
sn8, Liquid_level, 30, 

これは、Google-GSONユーザーガイドから抜粋したものです:https ://sites.google.com/site/gson/gson-user-guide#TOC-Collections-Examples

于 2012-11-19T10:42:43.530 に答える