【问题标题】:How to parse json string created by stringify function in javascript?如何解析javascript中stringify函数创建的json字符串?
【发布时间】:2015-03-10 01:17:52
【问题描述】:

我想解析由 javascript 中的 stringify() 函数创建的 java 类 (.java) 中的 json 字符串。我知道要解析这样的字符串:

                String JSON_DATA
                = "{"
                + "  \"geodata\": ["
                + "    {"
                + "      \"id\": \"1\","
                + "      \"name\": \"Julie Sherman\","
                + "      \"gender\" : \"female\","
                + "      \"latitude\" : \"37.33774833333334\","
                + "      \"longitude\" : \"-121.88670166666667\""
                + "    },"
                + "    {"
                + "      \"id\": \"2\","
                + "      \"name\": \"Johnny Depp\","
                + "      \"gender\" : \"male\","
                + "      \"latitude\" : \"37.336453\","
                + "      \"longitude\" : \"-121.884985\""
                + "    }"
                + "  ]"
                + "}";

但是如何解析这个字符串呢?

        var IO = {
        //returns array with storable google.maps.Overlay-definitions
        IN: function(arr, //array with google.maps.Overlays
                encoded//boolean indicating whether pathes should be stored encoded
                ) {
            var shapes = [],
                    goo = google.maps,
                    shape, tmp;

            for (var i = 0; i < arr.length; i++)
            {
                shape = arr[i];
                tmp = {type: this.t_(shape.type), id: shape.id || null};


                switch (tmp.type) {
                    case 'CIRCLE':
                        tmp.radius = shape.getRadius();
                        tmp.geometry = this.p_(shape.getCenter());
                        break;
                    case 'MARKER':
                        tmp.geometry = this.p_(shape.getPosition());
                        break;
                    case 'RECTANGLE':
                        tmp.geometry = this.b_(shape.getBounds());
                        break;
                    case 'POLYLINE':
                        tmp.geometry = this.l_(shape.getPath(), encoded);
                        break;
                    case 'POLYGON':
                        tmp.geometry = this.m_(shape.getPaths(), encoded);

                        break;
                }
                shapes.push(tmp);
            }

            return shapes;
        } 

形成要解析的字符串是:

[{"type":"CIRCLE","id":null,"radius":1730.4622192451884,"geometry":[32.3610810916614,50.91339111328125]},{"type":"CIRCLE","id":null,"radius":1831.5495077322266,"geometry":[32.35528086804335,50.997161865234375]},{"type":"CIRCLE","id":null,"radius":1612.2461023303567,"geometry":[32.34454947365649,51.011924743652344]}]

【问题讨论】:

  • 你想在javascript中解析一个json字符串吗?你的问题不清楚
  • 您可以使用 Gson 在 Java 中解析 Json:sites.google.com/site/gson/gson-user-guide
  • 是的,我想在 java 类 .java 中解析字符串,而不是在 javascript 中。

标签: java javascript json google-maps-api-3


【解决方案1】:

您可以为此使用GsonJackson。创建一个 POJO 来保存数据并使用这些库。一个带有 Gson 的 eg

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

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

class JsonData {
    private String type;
    private String id;
    private double radius;
    private List<Double> geometry;

    //Getters & Setters
}

public class JsonParser {

    public static void main(String[] args) {
        String json = "[{\"type\":\"CIRCLE\",\"id\":null,\"radius\":1730.4622192451884,\"geometry\":[32.3610810916614,50.91339111328125]},{\"type\":\"CIRCLE\",\"id\":null,\"radius\":1831.5495077322266,\"geometry\":[32.35528086804335,50.997161865234375]},{\"type\":\"CIRCLE\",\"id\":null,\"radius\":1612.2461023303567,\"geometry\":[32.34454947365649,51.011924743652344]}]";

        Type listType = new TypeToken<List<JsonData>>() {}.getType();
        List<JsonData> disputeSummaryArraylistobjectList = new Gson().fromJson(json, listType);
        System.out.println(disputeSummaryArraylistobjectList);
    }

}

【讨论】:

    【解决方案2】:

    您将需要一个用于 Java 的 JSON 解析器,例如 GSONJackson

    解析有两种策略:

    1. 创建 Java 对象并让 JSON 解析器将输入中的元素映射到字段
    2. 遍历解析器返回的通用 JSON 数据结构

    这两个项目的文档都包含许多如何实现的示例。

    【讨论】:

      猜你喜欢
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多