【问题标题】:Parsing JSON in javascript coming from Java Jackson JSON在来自 Java Jackson JSON 的 javascript 中解析 JSON
【发布时间】:2014-12-12 17:45:30
【问题描述】:

我按照这个例子生成了一个json字符串,稍后在javascript中解析

package example;

import org.codehaus.jackson.map.ObjectMapper;
import java.util.HashMap;
import java.util.Map;

public class Example {

    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        ObjectMapper mapper = new ObjectMapper();
        map.put("key1","value1");
        map.put("key2","value2");

        String json = mapper.writeValueAsString(map);
        System.out.println(json);
    }
}

在 Javascript 中:

 $http.get('/rest/json-example').
            success(function(data) {
                //$scope.count = data.length;
                console.log(data.key1);
                //console.log(JSON.parse(data));
            }).error(function(error) {
                console.log(error);
            });

我不知道如何解析字符串,这是使用它打印出来的方式

console.log(data)
// Object {key1: "value2", key2: "value1"} 

如果我使用

JSON.parse(data); 
// I get an error "unexpected SyntaxError: Unexpected token o at Object.parse (native)..."

如果我尝试像这样访问它:

console.log(data[0]);
// I get undefined

【问题讨论】:

  • 也许字符串 data 不是 JSON,因为它没有引用属性名称? data 定义在哪里?
  • @JuanMendes:JSON 序列化程序将产生有效的 JSON。
  • @SLaks 我希望如此,但是 OP 正在调用 JSON.parse 并且它失败了? OP 需要显示数据的定义位置。
  • 感谢我添加了我的 javascript 调用
  • data 已经从 JSON 转换为 JavaScript 对象,无需解析

标签: java javascript json jackson


【解决方案1】:

data 是一个具有两个属性的对象。

JSON.parse() 失败,因为它不是 JSON 字符串。

data[0] 不返回任何内容,因为它没有这样的属性。

你想要data.key1

【讨论】:

  • data 来自哪里?它不是来自 AJAX 调用的字符串吗?
  • @JuanMendes:我们不知道,但console.log 清楚地表明它是一个对象。
  • 没错,我错过了前面的Object,以为可能是JSON序列化器的问题。一些 JSON 序列化程序确实可以选择不引用字符串,或者可能只是在反序列化时......
猜你喜欢
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
相关资源
最近更新 更多