使用Option中的Value从JSON获取数据

时间:2019-04-27 01:45:19

标签: javascript jquery json object

朋友!我有一个json文件,一个.js文件和一些html。

我可以很好地从js文件中的json文件中读取数据,并将其输出到控制台。

所以我有一个包含所有50个状态的下拉列表,这些值是状态的缩写。每个州有6个不同的值,例如:

 public interface UserClient {


     // @FormUrlEncoded

     //  @Headers({ "Content-Type: application/json"})

    @POST("todos")


    Call<User>createAccount(

        @Field("id") String id,
        @Field("name") String name

);

我可以这样处理数据:data.AK.II,这很好。

我在实现此目标时遇到问题:数据。(所选选项的值)。II

    OkHttpClient okHttpClient = new OkHttpClient().newBuilder().addInterceptor(new Interceptor() {
        @Override
        public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException {



            Request originalRequest = chain.request();

            Request.Builder builder = originalRequest.newBuilder().header("Authorization", "Bearer xxxxxxxxxx"
                    );

            Request newRequest = builder.build();
            return chain.proceed(newRequest);
        }
    }).build();


    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://192.168.xx.x:xxxx/")
            .client(okHttpClient)
            .build();


    UserClient client = retrofit.create(UserClient.class);

  //  var k1 = "100000";
    Call<User> call = client.createAccount("777377","ddddddd");

    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {
            Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_SHORT).show();
            Log.d("RESPONSE",response.toString());
        }

        @Override
        public void onFailure(Call<User> call, Throwable t) {
            Toast.makeText(MainActivity.this,"Not Success",Toast.LENGTH_SHORT).show();
        }
    });
}

这是我遇到的错误,因此'thisValue'遇到未定义的情况。

未捕获的TypeError:无法读取未定义的属性“ I”

我应该以某种方式进行转换吗?我想我已经盯着这个太久了。

2 个答案:

答案 0 :(得分:1)

使用方括号表示法:

/[\\/]node_modules[\\/]react[\\/]/

答案 1 :(得分:1)

data.thisValue.II更改为data[thisValue].II,它将起作用。

  
      
  • 当键名中有空格时,例如,基本使用括号表示法。 "full name"
  •   如果直接尝试访问对象中的值,请使用
  • 表示法。如果d = {k: 1},那么d.kd[k]都可以。 d = {"k v": 1},那么只有d["k v"]将起作用。
  •   
> data = {
...     "AK": {
.....         "I": 0,
.....         "II": 0,
.....         "III": 0,
.....         "IV": 0,
.....         "V": 0,
.....         "VI": 0
.....     }
... }
{ AK: { I: 0, II: 0, III: 0, IV: 0, V: 0, VI: 0 } }
> 
> thisValue = "AK"
'AK'
> 
> data[thisValue].I
0
> data[thisValue].II
0
> 

以下内容将引发异常(错误)。

> data.thisValue.II
Thrown:
TypeError: Cannot read property 'II' of undefined
>